Commit 50c837f9 authored by Andrey Filippov's avatar Andrey Filippov

trying synthesis

parent 9266a87c
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
<link> <link>
<name>vivado_logs/VivadoSynthesis.log</name> <name>vivado_logs/VivadoSynthesis.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoSynthesis-20150718203305908.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoSynthesis-20150719165235946.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoTimimgSummaryReportImplemented.log</name> <name>vivado_logs/VivadoTimimgSummaryReportImplemented.log</name>
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
<link> <link>
<name>vivado_logs/VivadoTimimgSummaryReportSynthesis.log</name> <name>vivado_logs/VivadoTimimgSummaryReportSynthesis.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoTimimgSummaryReportSynthesis-20150718203305908.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoTimimgSummaryReportSynthesis-20150719165235946.log</location>
</link> </link>
<link> <link>
<name>vivado_logs/VivadoTimingReportImplemented.log</name> <name>vivado_logs/VivadoTimingReportImplemented.log</name>
...@@ -112,7 +112,7 @@ ...@@ -112,7 +112,7 @@
<link> <link>
<name>vivado_logs/VivadoTimingReportSynthesis.log</name> <name>vivado_logs/VivadoTimingReportSynthesis.log</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_logs/VivadoTimingReportSynthesis-20150718203305908.log</location> <location>/home/andrey/git/x393/vivado_logs/VivadoTimingReportSynthesis-20150719165235946.log</location>
</link> </link>
<link> <link>
<name>vivado_state/x393-opt-phys.dcp</name> <name>vivado_state/x393-opt-phys.dcp</name>
...@@ -132,7 +132,7 @@ ...@@ -132,7 +132,7 @@
<link> <link>
<name>vivado_state/x393-synth.dcp</name> <name>vivado_state/x393-synth.dcp</name>
<type>1</type> <type>1</type>
<location>/home/andrey/git/x393/vivado_state/x393-synth-20150718203305908.dcp</location> <location>/home/andrey/git/x393/vivado_state/x393-synth-20150719165235946.dcp</location>
</link> </link>
</linkedResources> </linkedResources>
</projectDescription> </projectDescription>
...@@ -4,6 +4,6 @@ VivadoSynthesis_115_flatten_hierarchy=none ...@@ -4,6 +4,6 @@ VivadoSynthesis_115_flatten_hierarchy=none
VivadoSynthesis_127_verbose=true VivadoSynthesis_127_verbose=true
VivadoSynthesis_81_parser_mode=1 VivadoSynthesis_81_parser_mode=1
VivadoSynthesis_93_OtherProblems=Netlist 29-345<-@\#\#@->Board 49-26<-@\#\#@-> VivadoSynthesis_93_OtherProblems=Netlist 29-345<-@\#\#@->Board 49-26<-@\#\#@->
VivadoSynthesis_95_ShowInfo=false VivadoSynthesis_95_ShowInfo=true
com.elphel.store.context.VivadoSynthesis=VivadoSynthesis_102_ConstraintsFiles<-@\#\#@->VivadoSynthesis_95_ShowInfo<-@\#\#@->VivadoSynthesis_115_flatten_hierarchy<-@\#\#@->VivadoSynthesis_101_MaxMsg<-@\#\#@->VivadoSynthesis_127_verbose<-@\#\#@->VivadoSynthesis_93_OtherProblems<-@\#\#@->VivadoSynthesis_81_parser_mode<-@\#\#@-> com.elphel.store.context.VivadoSynthesis=VivadoSynthesis_102_ConstraintsFiles<-@\#\#@->VivadoSynthesis_95_ShowInfo<-@\#\#@->VivadoSynthesis_115_flatten_hierarchy<-@\#\#@->VivadoSynthesis_101_MaxMsg<-@\#\#@->VivadoSynthesis_127_verbose<-@\#\#@->VivadoSynthesis_93_OtherProblems<-@\#\#@->VivadoSynthesis_81_parser_mode<-@\#\#@->
eclipse.preferences.version=1 eclipse.preferences.version=1
...@@ -46,11 +46,11 @@ module cmprs_afi_mux_status #( ...@@ -46,11 +46,11 @@ module cmprs_afi_mux_status #(
output reg [3:0] chunk_ptr_ra, // full pointer address - {eof,wresp,chn[1:0]} output reg [3:0] chunk_ptr_ra, // full pointer address - {eof,wresp,chn[1:0]}
input [CMPRS_AFIMUX_WIDTH-1:0] chunk_ptr_rd // pointer data input [CMPRS_AFIMUX_WIDTH-1:0] chunk_ptr_rd // pointer data
); );
reg [15:0] mode_data_mclk; // some bits unused localparam MODE_IDTH = 15;
wire mode_we_hclk; reg [MODE_IDTH-1:0] mode_data_mclk; // some bits unused
reg [7:0] mode_hclk; wire mode_we_hclk;
reg [7:0] mode_hclk;
reg [1:0] index; reg [1:0] index;
reg [CMPRS_AFIMUX_CYCBITS-1:0] cntr; reg [CMPRS_AFIMUX_CYCBITS-1:0] cntr;
reg [CMPRS_AFIMUX_WIDTH-1:0] chunk_ptr_hclk; // pointer data reg [CMPRS_AFIMUX_WIDTH-1:0] chunk_ptr_hclk; // pointer data
reg [1:0] chunk_chn_hclk; // pointer channel reg [1:0] chunk_chn_hclk; // pointer channel
...@@ -67,7 +67,7 @@ module cmprs_afi_mux_status #( ...@@ -67,7 +67,7 @@ module cmprs_afi_mux_status #(
assign stb_w = en && (cntr==0); assign stb_w = en && (cntr==0);
always @ (posedge mclk) begin always @ (posedge mclk) begin
if (mode_we) mode_data_mclk <= cmd_data[15:0]; if (mode_we) mode_data_mclk <= cmd_data[MODE_IDTH-1:0];
end end
always @ (posedge hclk) begin always @ (posedge hclk) begin
......
...@@ -110,7 +110,8 @@ module cmprs_buf_average#( ...@@ -110,7 +110,8 @@ module cmprs_buf_average#(
wire [1:0] pre_accCdone; // need to make sure that pre_accCdone do_r not happen with pre_accYdone wire [1:0] pre_accCdone; // need to make sure that pre_accCdone do_r not happen with pre_accYdone
reg [3:0] accYrun; reg [3:0] accYrun;
reg [1:0] accCrun; reg [1:0] accCrun;
reg [3:0] accYdone; // only bit 0 is used as a start of output // reg [3:0] accYdone; // only bit 0 is used as a start of output
reg accYdone; // only bit 0 is used as a start of output
reg accYdoneAny; reg accYdoneAny;
reg [1:0] avrY_wa, pre_avrY_wa; reg [1:0] avrY_wa, pre_avrY_wa;
reg avrC_wa, pre_avrC_wa; reg avrC_wa, pre_avrC_wa;
...@@ -199,7 +200,8 @@ module cmprs_buf_average#( ...@@ -199,7 +200,8 @@ module cmprs_buf_average#(
accYrun[3:0] <= {4{frame_en}} & ((accYfirst[3:0] & accYen[3:0]) | (accYrun[3:0] & ~pre_accYdone[3:0])); accYrun[3:0] <= {4{frame_en}} & ((accYfirst[3:0] & accYen[3:0]) | (accYrun[3:0] & ~pre_accYdone[3:0]));
accCrun[1:0] <= {2{frame_en}} & ((accCfirst[1:0] & accCen[1:0]) | (accCrun[1:0] & ~pre_accCdone[1:0])); accCrun[1:0] <= {2{frame_en}} & ((accCfirst[1:0] & accCen[1:0]) | (accCrun[1:0] & ~pre_accCdone[1:0]));
accYdone[3:0] <= pre_accYdone[3:0] & accYrun[3:0]; // accYdone[3:0] <= pre_accYdone[3:0] & accYrun[3:0];
accYdone <= pre_accYdone[0] & accYrun[0];
accYdoneAny <= |(pre_accYdone[3:0] & accYrun[3:0]); accYdoneAny <= |(pre_accYdone[3:0] & accYrun[3:0]);
avr_we <= |(pre_accYdone[3:0] & accYrun[3:0]) || |(pre_accCdone[1:0] & accCrun[1:0]); avr_we <= |(pre_accYdone[3:0] & accYrun[3:0]) || |(pre_accCdone[1:0] & accCrun[1:0]);
...@@ -284,11 +286,11 @@ module cmprs_buf_average#( ...@@ -284,11 +286,11 @@ module cmprs_buf_average#(
case (converter_type_r) case (converter_type_r)
CMPRS_COLOR18: ccv_out_start <= (yaddrw[7:0]==8'hc4); //TODO: adjust to minimal latency? CMPRS_COLOR18: ccv_out_start <= (yaddrw[7:0]==8'hc4); //TODO: adjust to minimal latency?
CMPRS_COLOR20: ccv_out_start <= (yaddrw[7:0]==8'hc4); //TODO: adjust to minimal latency? CMPRS_COLOR20: ccv_out_start <= (yaddrw[7:0]==8'hc4); //TODO: adjust to minimal latency?
CMPRS_MONO16: ccv_out_start <= accYdone[0]; CMPRS_MONO16: ccv_out_start <= accYdone; //[0];
CMPRS_JP4: ccv_out_start <= accYdone[0]; CMPRS_JP4: ccv_out_start <= accYdone; //[0];
CMPRS_JP4DIFF: ccv_out_start <= accYdone[0]; CMPRS_JP4DIFF: ccv_out_start <= accYdone; //[0];
CMPRS_MONO8: ccv_out_start <= accYdone[0]; CMPRS_MONO8: ccv_out_start <= accYdone; //[0];
default: ccv_out_start <= accYdone[0]; default: ccv_out_start <= accYdone; //[0];
endcase endcase
end end
......
...@@ -305,7 +305,7 @@ module cmprs_cmd_decode#( ...@@ -305,7 +305,7 @@ module cmprs_cmd_decode#(
always @ (posedge xclk) begin always @ (posedge xclk) begin
if (format_we_xclk) format_xclk <= format_mclk; if (format_we_xclk) format_xclk <= format_mclk;
if (color_sat_we_xclk) color_sat_xclk <= color_sat_mclk; if (color_sat_we_xclk) color_sat_xclk <= color_sat_mclk; // SuppressThisWarning VivadoSynthesis
if (coring_we_xclk) coring_xclk <= coring_mclk; if (coring_we_xclk) coring_xclk <= coring_mclk;
end end
......
...@@ -85,7 +85,8 @@ module cmprs_macroblock_buf_iface #( ...@@ -85,7 +85,8 @@ module cmprs_macroblock_buf_iface #(
reg [ 2:0] next_valid; // number of next valid page (only 2 LSB are actual page number) reg [ 2:0] next_valid; // number of next valid page (only 2 LSB are actual page number)
reg [ 2:0] next_invalid; // oldest valid page reg [ 2:0] next_invalid; // oldest valid page
reg [ 1:0] add_invalid; // advance next_invalid pointer by this value, send next_page pulses reg [ 1:0] add_invalid; // advance next_invalid pointer by this value, send next_page pulses
reg [ 2:0] used_pages; // number of pages simultaneously used for the last macroblock // reg [ 2:0] used_pages; // number of pages simultaneously used for the last macroblock
reg [ 1:0] used_pages; // number of pages simultaneously used for the last macroblock - [2] was never used
reg [ 2:0] needed_page; // calculate at MB start reg [ 2:0] needed_page; // calculate at MB start
reg pre_first_mb; // from frame start to mb_pre_start[2] reg pre_first_mb; // from frame start to mb_pre_start[2]
// reg first_mb; // from mb_pre_start[2] to mb_pre_start[1] // reg first_mb; // from mb_pre_start[2] to mb_pre_start[1]
...@@ -183,7 +184,8 @@ module cmprs_macroblock_buf_iface #( ...@@ -183,7 +184,8 @@ module cmprs_macroblock_buf_iface #(
pre_advance_tiles[1:0] <= {1'b0, mbl_x_inc_r[7]}; pre_advance_tiles[1:0] <= {1'b0, mbl_x_inc_r[7]};
end end
endcase endcase
used_pages <= needed_page - next_invalid +1; // used_pages <= needed_page - next_invalid +1;
used_pages <= needed_page[1:0] - next_invalid[1:0] +1; // nit [2] not used
end end
if (mb_pre_start[7]) begin // TODO: apply after delay, regardless last or not if (mb_pre_start[7]) begin // TODO: apply after delay, regardless last or not
if (mb_last_in_row) add_invalid <= used_pages[1:0]; if (mb_last_in_row) add_invalid <= used_pages[1:0];
......
...@@ -268,6 +268,18 @@ module csconvert#( ...@@ -268,6 +268,18 @@ module csconvert#(
// pre_color_enable <= 1'b0; // pre_color_enable <= 1'b0;
// ccv_out_start <= accYdone[0]; // ccv_out_start <= accYdone[0];
end end
default:begin //color 18 (or try 'X'
pre_first_out <= 'bx; // conv18_pre_first_out;
signed_y[8:0] <= 'bx; // {conv18_signed_y[7],conv18_signed_y[7:0]};
ywe <= 'bx; //conv18_ywe;
yaddrw[7:0] <= 'bx; //{conv18_yaddrw[7],conv18_yaddrw[3],conv18_yaddrw[6:4],conv18_yaddrw[2:0]};
signed_c[8:0] <= 'bx; //{conv18_signed_c[8:0]};
cwe <= 'bx; //conv18_cwe;
caddrw[7:0] <= 'bx; //{1'b0,conv18_caddrw[6:0]};
n000 <= 'bx; //conv18_n000;
n255 <= 'bx; //conv18_n255;
end
endcase endcase
......
...@@ -380,13 +380,13 @@ module csconvert18a( ...@@ -380,13 +380,13 @@ module csconvert18a(
// second term is pa1, third - (pd0+pd2)/2 // second term is pa1, third - (pd0+pd2)/2
// else // else
// second term is (pa1 + (pd0+pd2)/2)/2, third - (pa0+pa2)/2 // second term is (pa1 + (pd0+pd2)/2)/2, third - (pa0+pa2)/2
reg [7:0] m1; // reg [7:0] m1; same as pd1_dly
reg [7:0] m2; reg [7:0] m2;
reg [7:0] m3; reg [7:0] m3;
wire [8:0] pd02s= {1'b0,pd_prev[7:0]}+{1'b0,pd_next[7:0]}; // will use pd02s[8:1] wire [8:0] pd02s= {1'b0,pd_prev[7:0]}+{1'b0,pd_next[7:0]}; // will use pd02s[8:1]
wire [8:0] pa1pd02s={1'b0,pa1[7:0]}+{1'b0,pd02s[8:1]}; // will use pa1pd02s[8:1] wire [8:0] pa1pd02s={1'b0,pa1[7:0]}+{1'b0,pd02s[8:1]}; // will use pa1pd02s[8:1]
wire [8:0] pa02s= {1'b0,pa_prev[7:0]}+{1'b0,pa_next[7:0]}; // will use pa02s[8:1] wire [8:0] pa02s= {1'b0,pa_prev[7:0]}+{1'b0,pa_next[7:0]}; // will use pa02s[8:1]
always @ (posedge CLK) m1 <= pd1[7:0]; // always @ (posedge CLK) m1 <= pd1[7:0]; // same as pd1_dly
// always @ (posedge CLK) m2 <= (odd_pix==odd_line)? pa1[7:0] : pa1pd02s[8:1]; // always @ (posedge CLK) m2 <= (odd_pix==odd_line)? pa1[7:0] : pa1pd02s[8:1];
// always @ (posedge CLK) m3 <= (odd_pix==odd_line)? pd02s[8:1] : pa02s[8:1]; // always @ (posedge CLK) m3 <= (odd_pix==odd_line)? pd02s[8:1] : pa02s[8:1];
always @ (posedge CLK) m2 <= pix_green? pa1[7:0] : pa1pd02s[8:1]; always @ (posedge CLK) m2 <= pix_green? pa1[7:0] : pa1pd02s[8:1];
...@@ -526,16 +526,17 @@ Y[1,1]=(0x96*P[1,1]+ 0x1d*((P[1,0]+P[1,2])/2 + 0x4d*((P[0,1] + ...@@ -526,16 +526,17 @@ Y[1,1]=(0x96*P[1,1]+ 0x1d*((P[1,0]+P[1,2])/2 + 0x4d*((P[0,1] +
end end
endcase endcase
wire [15:0] mm1=m1[7:0]*k1[7:0]; wire [15:0] mm1=pd1_dly[7:0] * k1[7:0]; //m1[7:0]*k1[7:0];
wire [15:0] mm2=m2[7:0]*k2[7:0]; wire [15:0] mm2=m2[7:0]*k2[7:0];
wire [15:0] mm3=m3[7:0]*k3[7:0]; wire [15:0] mm3=m3[7:0]*k3[7:0];
reg [7:0] y; reg [7:0] y;
reg [7:0] y0; // bypass in monochrome mode // reg [7:0] y0; // bypass in monochrome mode
wire [7:0] y0 = pdc;
// wire [7:0] y0; // bypass in monochrome mode // wire [7:0] y0; // bypass in monochrome mode
reg [15:0] y1,y2,y3; reg [15:0] y1,y2,y3;
wire [15:0] y_sum =y1+y2+y3; wire [15:0] y_sum =y1+y2+y3;
always @ (posedge CLK) y0 <= m1; // always @ (posedge CLK) y0 <= pd1_dly; // m1; // equivalent
always @ (posedge CLK) y1 <= mm1; always @ (posedge CLK) y1 <= mm1;
always @ (posedge CLK) y2 <= mm2; always @ (posedge CLK) y2 <= mm2;
always @ (posedge CLK) y3 <= mm3; always @ (posedge CLK) y3 <= mm3;
......
...@@ -85,7 +85,8 @@ module focus_sharp393( ...@@ -85,7 +85,8 @@ module focus_sharp393(
reg [11:0] di_d; reg [11:0] di_d;
reg [11:0] d1; reg [11:0] d1;
reg [8:0] start2; reg [8:0] start2;
reg [7:0] finish2; // reg [7:0] finish2;
reg [6:0] finish2; // bit[7] never used
reg [5:0] use_k_dly; reg [5:0] use_k_dly;
reg [23:0] acc_blk; // accumulator for the sum ((a[i]*d[i])^2) reg [23:0] acc_blk; // accumulator for the sum ((a[i]*d[i])^2)
reg [22:0] sum_blk; // accumulator for the sum ((a[i]*d[i])^2), copied at block end reg [22:0] sum_blk; // accumulator for the sum ((a[i]*d[i])^2), copied at block end
...@@ -141,6 +142,7 @@ module focus_sharp393( ...@@ -141,6 +142,7 @@ module focus_sharp393(
3'h4: wnd_totalwidth[8:1] <= wnd_reg[11:4] ; 3'h4: wnd_totalwidth[8:1] <= wnd_reg[11:4] ;
3'h5: filt_sel0[3:0] <= wnd_reg[3:0] ; 3'h5: filt_sel0[3:0] <= wnd_reg[3:0] ;
3'h6: stren <= wnd_reg[0] ; 3'h6: stren <= wnd_reg[0] ;
default: begin end
endcase endcase
end end
end end
...@@ -193,10 +195,12 @@ module focus_sharp393( ...@@ -193,10 +195,12 @@ module focus_sharp393(
filt_sel[3:0] <= filt_sel0[3:0]; filt_sel[3:0] <= filt_sel0[3:0];
if (clksync[2]) d1[11:0]<=di_d[11:0]; if (clksync[2]) d1[11:0]<=di_d[11:0];
start2[8:0] <= {start2[7:0], start && csync}; start2[8:0] <= {start2[7:0], start && csync};
finish2[7:0]<= {finish2[6:0],use_coef && !next_ac}; // finish2[7:0]<= {finish2[6:0],use_coef && !next_ac};
finish2[6:0]<= {finish2[5:0],use_coef && !next_ac}; // finish2[7] was never used
if (!en || start2[0]) tba[5:0] <= 6'h0; if (!en || start2[0]) tba[5:0] <= 6'h0;
else if (!csync && (tba[5:0] != 6'h3f)) tba[5:0] <= tba[5:0] + 1; else if (!csync && (tba[5:0] != 6'h3f)) tba[5:0] <= tba[5:0] + 1;
mult_s[17:0] <= (&mult_p[35:31] || !(&mult_p[35:31]))?mult_p[31:14]:18'h1ffff; // mult_s[17:0] <= (&mult_p[35:31] || !(&mult_p[35:31]))?mult_p[31:14]:18'h1ffff;
mult_s[17:0] <= (&mult_p[35:31] || !(|mult_p[35:31]))?mult_p[31:14]:18'h1ffff;
next_ac <= en && (start2[3] || (next_ac && ((tba[5:0] != 6'h3f) || csync ))); next_ac <= en && (start2[3] || (next_ac && ((tba[5:0] != 6'h3f) || csync )));
use_coef <= next_ac && !csync; use_coef <= next_ac && !csync;
use_k_dly[5:0] <= {use_k_dly[4:0],use_coef}; use_k_dly[5:0] <= {use_k_dly[4:0],use_coef};
......
...@@ -650,18 +650,18 @@ ...@@ -650,18 +650,18 @@
parameter BUF_CLK1X_PCLK = "BUFG", parameter BUF_CLK1X_PCLK = "BUFG",
parameter BUF_CLK1X_PCLK2X = "BUFG", parameter BUF_CLK1X_PCLK2X = "BUFG",
parameter CLKIN_PERIOD_XCLK = 20, // 24MHz parameter CLKIN_PERIOD_XCLK = 20, // 50MHz
parameter DIVCLK_DIVIDE_XCLK = 1, parameter DIVCLK_DIVIDE_XCLK = 1,
parameter CLKFBOUT_MULT_XCLK = 50, // 1000 MHz parameter CLKFBOUT_MULT_XCLK = 20, // 50*20=1000 MHz
parameter CLKOUT_DIV_XCLK = 10, // 100 MHz parameter CLKOUT_DIV_XCLK = 10, // 100 MHz
parameter CLKOUT_DIV_XCLK2X = 5, // 200 MHz parameter CLKOUT_DIV_XCLK2X = 5, // 200 MHz
parameter PHASE_CLK2X_XCLK = 0.000, parameter PHASE_CLK2X_XCLK = 0.000,
parameter BUF_CLK1X_XCLK = "BUFG", parameter BUF_CLK1X_XCLK = "BUFG",
parameter BUF_CLK1X_XCLK2X = "BUFG", parameter BUF_CLK1X_XCLK2X = "BUFG",
parameter CLKIN_PERIOD_SYNC = 20, // 24MHz parameter CLKIN_PERIOD_SYNC = 20, // 50MHz
parameter DIVCLK_DIVIDE_SYNC = 1, parameter DIVCLK_DIVIDE_SYNC = 1,
parameter CLKFBOUT_MULT_SYNC = 50, // 1000 MHz parameter CLKFBOUT_MULT_SYNC = 20, // 50*20=1000 MHz
parameter CLKOUT_DIV_SYNC = 10, // 100 MHz parameter CLKOUT_DIV_SYNC = 10, // 100 MHz
parameter BUF_CLK1X_SYNC = "BUFG", parameter BUF_CLK1X_SYNC = "BUFG",
......
...@@ -36,7 +36,7 @@ module sens_sync#( ...@@ -36,7 +36,7 @@ module sens_sync#(
input rst, // global reset input rst, // global reset
input pclk, // global clock input, pixel rate (96MHz for MT9P006) input pclk, // global clock input, pixel rate (96MHz for MT9P006)
input mclk, // global system clock, synchronizes commands input mclk, // global system clock, synchronizes commands
input en, // enable channel (0 resets counters) input en, // @pclk enable channel (0 resets counters)
input sof_in, // @pclk start of frame input, single-cycle input sof_in, // @pclk start of frame input, single-cycle
input eof_in, // @pclk end of frame input, single-cycle (to limit sof_late input eof_in, // @pclk end of frame input, single-cycle (to limit sof_late
input hact, // @pclk (use to count lines for delayed pulse) input hact, // @pclk (use to count lines for delayed pulse)
......
...@@ -51,10 +51,11 @@ module sensor_channel#( ...@@ -51,10 +51,11 @@ module sensor_channel#(
parameter SENSOR_CTRL_RADDR = 0, //'h00 parameter SENSOR_CTRL_RADDR = 0, //'h00
parameter SENSOR_CTRL_ADDR_MASK = 'h7ff, // parameter SENSOR_CTRL_ADDR_MASK = 'h7ff, //
// bits of the SENSOR mode register // bits of the SENSOR mode register
parameter SENSOR_MODE_WIDTH = 9, parameter SENSOR_MODE_WIDTH = 10,
parameter SENSOR_HIST_EN_BIT = 0, // 0..3 1 - enable histogram modules, disable after processing the started frame parameter SENSOR_HIST_EN_BIT = 4, // 0..3 1 - enable histogram modules, disable after processing the started frame
parameter SENSOR_HIST_NRST_BIT = 4, // 0 - immediately reset all histogram modules parameter SENSOR_HIST_NRST_BIT = 8, // 0 - immediately reset all histogram modules
parameter SENSOR_16BIT_BIT = 8, // 0 - 8 bpp mode, 1 - 16 bpp (bypass gamma). Gamma-processed data is still used for histograms parameter SENSOR_CHN_EN_BIT = 8, // 1 - this enable channel
parameter SENSOR_16BIT_BIT = 9, // 0 - 8 bpp mode, 1 - 16 bpp (bypass gamma). Gamma-processed data is still used for histograms
parameter SENSI2C_CTRL_RADDR = 2, // 'h02..'h03 parameter SENSI2C_CTRL_RADDR = 2, // 'h02..'h03
parameter SENSI2C_CTRL_MASK = 'h7fe, parameter SENSI2C_CTRL_MASK = 'h7fe,
...@@ -256,6 +257,8 @@ module sensor_channel#( ...@@ -256,6 +257,8 @@ module sensor_channel#(
wire sensor_ctrl_we; wire sensor_ctrl_we;
reg [SENSOR_MODE_WIDTH-1:0] mode; reg [SENSOR_MODE_WIDTH-1:0] mode;
wire [3:0] hist_en; wire [3:0] hist_en;
wire en_mclk; // enable this channel
wire en_pclk; // enabole in pclk domain
wire hist_nrst; wire hist_nrst;
wire bit16; // 16-bit mode, 0 - 8 bit mode wire bit16; // 16-bit mode, 0 - 8 bit mode
wire [3:0] hist_rq; wire [3:0] hist_rq;
...@@ -291,6 +294,7 @@ module sensor_channel#( ...@@ -291,6 +294,7 @@ module sensor_channel#(
assign dav_w = bit16 ? gamma_hact_in : dav_8bit; assign dav_w = bit16 ? gamma_hact_in : dav_8bit;
assign last_in_line = ! ( bit16 ? gamma_hact_in : gamma_hact_out); assign last_in_line = ! ( bit16 ? gamma_hact_in : gamma_hact_out);
assign en_mclk = mode[SENSOR_CHN_EN_BIT];
assign hist_en = mode[SENSOR_HIST_EN_BIT+:4]; assign hist_en = mode[SENSOR_HIST_EN_BIT+:4];
assign hist_nrst = mode[SENSOR_HIST_NRST_BIT]; assign hist_nrst = mode[SENSOR_HIST_NRST_BIT];
assign bit16 = mode[SENSOR_16BIT_BIT]; assign bit16 = mode[SENSOR_16BIT_BIT];
...@@ -303,7 +307,7 @@ module sensor_channel#( ...@@ -303,7 +307,7 @@ module sensor_channel#(
always @ (posedge rst or posedge mclk) begin always @ (posedge rst or posedge mclk) begin
if (rst) mode <= 0; if (rst) mode <= 0;
else if (sensor_ctrl_we) mode <= sensor_ctrl_data[8:0]; else if (sensor_ctrl_we) mode <= sensor_ctrl_data[SENSOR_MODE_WIDTH-1:0];
end end
always @ (posedge pclk) begin always @ (posedge pclk) begin
...@@ -319,6 +323,8 @@ module sensor_channel#( ...@@ -319,6 +323,8 @@ module sensor_channel#(
eof_out_r <= bit16 ? gamma_eof_in : gamma_eof_out; eof_out_r <= bit16 ? gamma_eof_in : gamma_eof_out;
end end
level_cross_clocks level_cross_clocks_en_pclk_i (.clk(pclk), .d_in(en_mclk), .d_out(en_pclk));
status_router2 status_router2_sensor_i ( status_router2 status_router2_sensor_i (
.rst (rst), // input .rst (rst), // input
.clk (mclk), // input .clk (mclk), // input
...@@ -340,13 +346,13 @@ module sensor_channel#( ...@@ -340,13 +346,13 @@ module sensor_channel#(
.ADDR_WIDTH (1), .ADDR_WIDTH (1),
.DATA_WIDTH (32) .DATA_WIDTH (32)
) cmd_deser_sens_channel_i ( ) cmd_deser_sens_channel_i (
.rst (rst), // input .rst (rst), // input
.clk (mclk), // input .clk (mclk), // input
.ad (cmd_ad), // input[7:0] .ad (cmd_ad), // input[7:0]
.stb (cmd_stb), // input .stb (cmd_stb), // input
.addr (), // output[0:0] - not used .addr (), // output[0:0] - not used
.data (sensor_ctrl_data), // output[31:0] .data (sensor_ctrl_data), // output[31:0]
.we (sensor_ctrl_we) // output .we (sensor_ctrl_we) // output
); );
sensor_i2c_io #( sensor_i2c_io #(
...@@ -363,16 +369,16 @@ module sensor_channel#( ...@@ -363,16 +369,16 @@ module sensor_channel#(
.SENSI2C_IOSTANDARD (SENSI2C_IOSTANDARD), .SENSI2C_IOSTANDARD (SENSI2C_IOSTANDARD),
.SENSI2C_SLEW (SENSI2C_SLEW) .SENSI2C_SLEW (SENSI2C_SLEW)
) sensor_i2c_io_i ( ) sensor_i2c_io_i (
.rst (rst), // input .rst (rst), // input
.mclk (mclk), // input .mclk (mclk), // input
.cmd_ad (cmd_ad), // input[7:0] .cmd_ad (cmd_ad), // input[7:0]
.cmd_stb (cmd_stb), // input .cmd_stb (cmd_stb), // input
.status_ad (sens_i2c_status_ad), // output[7:0] .status_ad (sens_i2c_status_ad), // output[7:0]
.status_rq (sens_i2c_status_rq), // output .status_rq (sens_i2c_status_rq), // output
.status_start (sens_i2c_status_start), // input .status_start (sens_i2c_status_start), // input
.frame_sync (sof_out_mclk), // input .frame_sync (sof_out_mclk), // input
.scl (sns_scl), // inout .scl (sns_scl), // inout
.sda (sns_sda) // inout .sda (sns_sda) // inout
); );
sens_parallel12 #( sens_parallel12 #(
...@@ -449,16 +455,16 @@ module sensor_channel#( ...@@ -449,16 +455,16 @@ module sensor_channel#(
.SENSOR_FIFO_2DEPTH (SENSOR_FIFO_2DEPTH), .SENSOR_FIFO_2DEPTH (SENSOR_FIFO_2DEPTH),
.SENSOR_FIFO_DELAY (SENSOR_FIFO_DELAY) .SENSOR_FIFO_DELAY (SENSOR_FIFO_DELAY)
) sensor_fifo_i ( ) sensor_fifo_i (
.rst (rst), // input .rst (rst), // input
.iclk (ipclk), // input .iclk (ipclk), // input
.pclk (pclk), // input .pclk (pclk), // input
.pxd_in (pxd_to_fifo), // input[11:0] .pxd_in (pxd_to_fifo), // input[11:0]
.vact (vact_to_fifo), // input .vact (vact_to_fifo), // input
.hact (hact_to_fifo), // input .hact (hact_to_fifo), // input
.pxd_out (pxd), // output[11:0] .pxd_out (pxd), // output[11:0]
.data_valid (hact), // output .data_valid (hact), // output
.sof (sof), // output .sof (sof), // output
.eof (eof) // output .eof (eof) // output
); );
sens_sync #( sens_sync #(
...@@ -472,26 +478,23 @@ module sensor_channel#( ...@@ -472,26 +478,23 @@ module sensor_channel#(
.SENS_SYNC_MINBITS (SENS_SYNC_MINBITS), .SENS_SYNC_MINBITS (SENS_SYNC_MINBITS),
.SENS_SYNC_MINPER (SENS_SYNC_MINPER) .SENS_SYNC_MINPER (SENS_SYNC_MINPER)
) sens_sync_i ( ) sens_sync_i (
.rst (rst), // input .rst (rst), // input
.pclk (pclk), // input .pclk (pclk), // input
.mclk (mclk), // input .mclk (mclk), // input
.en(), // input .en (en_pclk), // input @pclk
.sof_in (sof), // input .sof_in (sof), // input
.eof_in (eof), // input .eof_in (eof), // input
.hact (hact), // input .hact (hact), // input
.trigger_mode (trigger_mode), // input .trigger_mode (trigger_mode), // input
.trig_in (trig_in), // input .trig_in (trig_in), // input
.trig (trig), // output .trig (trig), // output
.sof_out_pclk (sof_out_sync), // output reg .sof_out_pclk (sof_out_sync), // output reg
.sof_out (sof_out_mclk), // output .sof_out (sof_out_mclk), // output
.sof_late (sof_late_mclk), // output .sof_late (sof_late_mclk), // output
.cmd_ad (cmd_ad), // input[7:0] .cmd_ad (cmd_ad), // input[7:0]
.cmd_stb (cmd_stb) // input .cmd_stb (cmd_stb) // input
); );
sens_gamma #( sens_gamma #(
.SENS_GAMMA_NUM_CHN (SENS_GAMMA_NUM_CHN), .SENS_GAMMA_NUM_CHN (SENS_GAMMA_NUM_CHN),
.SENS_GAMMA_BUFFER (SENS_GAMMA_BUFFER), .SENS_GAMMA_BUFFER (SENS_GAMMA_BUFFER),
...@@ -508,20 +511,20 @@ module sensor_channel#( ...@@ -508,20 +511,20 @@ module sensor_channel#(
.SENS_GAMMA_MODE_REPET (SENS_GAMMA_MODE_REPET), .SENS_GAMMA_MODE_REPET (SENS_GAMMA_MODE_REPET),
.SENS_GAMMA_MODE_TRIG (SENS_GAMMA_MODE_TRIG) .SENS_GAMMA_MODE_TRIG (SENS_GAMMA_MODE_TRIG)
) sens_gamma_i ( ) sens_gamma_i (
.rst (rst), // input .rst (rst), // input
.pclk (pclk), // input .pclk (pclk), // input
.pxd_in (gamma_pxd_in), // input[15:0] .pxd_in (gamma_pxd_in), // input[15:0]
.hact_in (gamma_hact_in), // input .hact_in (gamma_hact_in), // input
.sof_in (gamma_sof_in), // input .sof_in (gamma_sof_in), // input
.eof_in (gamma_eof_in), // input .eof_in (gamma_eof_in), // input
.trig_in (1'b0), // input (use trig_soft) .trig_in (1'b0), // input (use trig_soft)
.pxd_out (gamma_pxd_out), // output[7:0] .pxd_out (gamma_pxd_out), // output[7:0]
.hact_out (gamma_hact_out), // output .hact_out (gamma_hact_out), // output
.sof_out (gamma_sof_out), // output .sof_out (gamma_sof_out), // output
.eof_out (gamma_eof_out), // output .eof_out (gamma_eof_out), // output
.mclk (mclk), // input .mclk (mclk), // input
.cmd_ad (cmd_ad), // input[7:0] .cmd_ad (cmd_ad), // input[7:0]
.cmd_stb (cmd_stb) // input .cmd_stb (cmd_stb) // input
); );
// TODO: Use generate to generate 1-4 histogram modules // TODO: Use generate to generate 1-4 histogram modules
...@@ -534,27 +537,27 @@ module sensor_channel#( ...@@ -534,27 +537,27 @@ module sensor_channel#(
.HISTOGRAM_LEFT_TOP (HISTOGRAM_LEFT_TOP), .HISTOGRAM_LEFT_TOP (HISTOGRAM_LEFT_TOP),
.HISTOGRAM_WIDTH_HEIGHT (HISTOGRAM_WIDTH_HEIGHT) .HISTOGRAM_WIDTH_HEIGHT (HISTOGRAM_WIDTH_HEIGHT)
) sens_histogram_i ( ) sens_histogram_i (
.rst (rst), // input .rst (rst), // input
.pclk (pclk), // input .pclk (pclk), // input
.pclk2x (pclk2x), // input .pclk2x (pclk2x), // input
.sof (gamma_sof_out), // input .sof (gamma_sof_out), // input
.hact (gamma_hact_out), // input .hact (gamma_hact_out), // input
.hist_di (gamma_pxd_out), // input[7:0] .hist_di (gamma_pxd_out), // input[7:0]
.mclk (mclk), // input .mclk (mclk), // input
.hist_en (hist_en[0]), // input .hist_en (hist_en[0]), // input
.hist_rst (!hist_nrst), // input .hist_rst (!hist_nrst), // input
.hist_rq (hist_rq[0]), // output .hist_rq (hist_rq[0]), // output
.hist_grant (hist_gr[0]), // input .hist_grant (hist_gr[0]), // input
.hist_do (hist_do0), // output[31:0] .hist_do (hist_do0), // output[31:0]
.hist_dv (hist_dv[0]), // output .hist_dv (hist_dv[0]), // output
.cmd_ad (cmd_ad), // input[7:0] .cmd_ad (cmd_ad), // input[7:0]
.cmd_stb (cmd_stb) // input .cmd_stb (cmd_stb) // input
); );
else else
sens_histogram_dummy sens_histogram_dummy_i ( sens_histogram_dummy sens_histogram_dummy_i (
.hist_rq(hist_rq[0]), // output .hist_rq(hist_rq[0]), // output
.hist_do(hist_do0), // output[31:0] .hist_do(hist_do0), // output[31:0]
.hist_dv(hist_dv[0]) // output .hist_dv(hist_dv[0]) // output
); );
endgenerate endgenerate
generate generate
...@@ -566,27 +569,27 @@ module sensor_channel#( ...@@ -566,27 +569,27 @@ module sensor_channel#(
.HISTOGRAM_LEFT_TOP (HISTOGRAM_LEFT_TOP), .HISTOGRAM_LEFT_TOP (HISTOGRAM_LEFT_TOP),
.HISTOGRAM_WIDTH_HEIGHT (HISTOGRAM_WIDTH_HEIGHT) .HISTOGRAM_WIDTH_HEIGHT (HISTOGRAM_WIDTH_HEIGHT)
) sens_histogram_i ( ) sens_histogram_i (
.rst (rst), // input .rst (rst), // input
.pclk (pclk), // input .pclk (pclk), // input
.pclk2x (pclk2x), // input .pclk2x (pclk2x), // input
.sof (gamma_sof_out), // input .sof (gamma_sof_out), // input
.hact (gamma_hact_out), // input .hact (gamma_hact_out), // input
.hist_di (gamma_pxd_out), // input[7:0] .hist_di (gamma_pxd_out), // input[7:0]
.mclk (mclk), // input .mclk (mclk), // input
.hist_en (hist_en[1]), // input .hist_en (hist_en[1]), // input
.hist_rst (!hist_nrst), // input .hist_rst (!hist_nrst), // input
.hist_rq (hist_rq[1]), // output .hist_rq (hist_rq[1]), // output
.hist_grant (hist_gr[1]), // input .hist_grant (hist_gr[1]), // input
.hist_do (hist_do1), // output[31:0] .hist_do (hist_do1), // output[31:0]
.hist_dv (hist_dv[1]), // output .hist_dv (hist_dv[1]), // output
.cmd_ad (cmd_ad), // input[7:0] .cmd_ad (cmd_ad), // input[7:0]
.cmd_stb (cmd_stb) // input .cmd_stb (cmd_stb) // input
); );
else else
sens_histogram_dummy sens_histogram_dummy_i ( sens_histogram_dummy sens_histogram_dummy_i (
.hist_rq(hist_rq[1]), // output .hist_rq(hist_rq[1]), // output
.hist_do(hist_do1), // output[31:0] .hist_do(hist_do1), // output[31:0]
.hist_dv(hist_dv[1]) // output .hist_dv(hist_dv[1]) // output
); );
endgenerate endgenerate
generate generate
...@@ -598,27 +601,27 @@ module sensor_channel#( ...@@ -598,27 +601,27 @@ module sensor_channel#(
.HISTOGRAM_LEFT_TOP (HISTOGRAM_LEFT_TOP), .HISTOGRAM_LEFT_TOP (HISTOGRAM_LEFT_TOP),
.HISTOGRAM_WIDTH_HEIGHT (HISTOGRAM_WIDTH_HEIGHT) .HISTOGRAM_WIDTH_HEIGHT (HISTOGRAM_WIDTH_HEIGHT)
) sens_histogram_i ( ) sens_histogram_i (
.rst (rst), // input .rst (rst), // input
.pclk (pclk), // input .pclk (pclk), // input
.pclk2x (pclk2x), // input .pclk2x (pclk2x), // input
.sof (gamma_sof_out), // input .sof (gamma_sof_out), // input
.hact (gamma_hact_out), // input .hact (gamma_hact_out), // input
.hist_di (gamma_pxd_out), // input[7:0] .hist_di (gamma_pxd_out), // input[7:0]
.mclk (mclk), // input .mclk (mclk), // input
.hist_en (hist_en[2]), // input .hist_en (hist_en[2]), // input
.hist_rst (!hist_nrst), // input .hist_rst (!hist_nrst), // input
.hist_rq (hist_rq[2]), // output .hist_rq (hist_rq[2]), // output
.hist_grant (hist_gr[2]), // input .hist_grant (hist_gr[2]), // input
.hist_do (hist_do2), // output[31:0] .hist_do (hist_do2), // output[31:0]
.hist_dv (hist_dv[2]), // output .hist_dv (hist_dv[2]), // output
.cmd_ad (cmd_ad), // input[7:0] .cmd_ad (cmd_ad), // input[7:0]
.cmd_stb (cmd_stb) // input .cmd_stb (cmd_stb) // input
); );
else else
sens_histogram_dummy sens_histogram_dummy_i ( sens_histogram_dummy sens_histogram_dummy_i (
.hist_rq(hist_rq[2]), // output .hist_rq(hist_rq[2]), // output
.hist_do(hist_do2), // output[31:0] .hist_do(hist_do2), // output[31:0]
.hist_dv(hist_dv[2]) // output .hist_dv(hist_dv[2]) // output
); );
endgenerate endgenerate
generate generate
...@@ -630,27 +633,27 @@ module sensor_channel#( ...@@ -630,27 +633,27 @@ module sensor_channel#(
.HISTOGRAM_LEFT_TOP (HISTOGRAM_LEFT_TOP), .HISTOGRAM_LEFT_TOP (HISTOGRAM_LEFT_TOP),
.HISTOGRAM_WIDTH_HEIGHT (HISTOGRAM_WIDTH_HEIGHT) .HISTOGRAM_WIDTH_HEIGHT (HISTOGRAM_WIDTH_HEIGHT)
) sens_histogram_i ( ) sens_histogram_i (
.rst (rst), // input .rst (rst), // input
.pclk (pclk), // input .pclk (pclk), // input
.pclk2x (pclk2x), // input .pclk2x (pclk2x), // input
.sof (gamma_sof_out), // input .sof (gamma_sof_out), // input
.hact (gamma_hact_out), // input .hact (gamma_hact_out), // input
.hist_di (gamma_pxd_out), // input[7:0] .hist_di (gamma_pxd_out), // input[7:0]
.mclk (mclk), // input .mclk (mclk), // input
.hist_en (hist_en[3]), // input .hist_en (hist_en[3]), // input
.hist_rst (!hist_nrst), // input .hist_rst (!hist_nrst), // input
.hist_rq (hist_rq[3]), // output .hist_rq (hist_rq[3]), // output
.hist_grant (hist_gr[3]), // input .hist_grant (hist_gr[3]), // input
.hist_do (hist_do3), // output[31:0] .hist_do (hist_do3), // output[31:0]
.hist_dv (hist_dv[3]), // output .hist_dv (hist_dv[3]), // output
.cmd_ad (cmd_ad), // input[7:0] .cmd_ad (cmd_ad), // input[7:0]
.cmd_stb (cmd_stb) // input .cmd_stb (cmd_stb) // input
); );
else else
sens_histogram_dummy sens_histogram_dummy_i ( sens_histogram_dummy sens_histogram_dummy_i (
.hist_rq(hist_rq[3]), // output .hist_rq(hist_rq[3]), // output
.hist_do(hist_do3), // output[31:0] .hist_do(hist_do3), // output[31:0]
.hist_dv(hist_dv[3]) // output .hist_dv(hist_dv[3]) // output
); );
endgenerate endgenerate
......
...@@ -42,18 +42,18 @@ module clocks393#( ...@@ -42,18 +42,18 @@ module clocks393#(
parameter BUF_CLK1X_PCLK = "BUFG", parameter BUF_CLK1X_PCLK = "BUFG",
parameter BUF_CLK1X_PCLK2X = "BUFG", parameter BUF_CLK1X_PCLK2X = "BUFG",
parameter CLKIN_PERIOD_XCLK = 20, // 24MHz parameter CLKIN_PERIOD_XCLK = 20, // 50MHz
parameter DIVCLK_DIVIDE_XCLK = 1, parameter DIVCLK_DIVIDE_XCLK = 1,
parameter CLKFBOUT_MULT_XCLK = 50, // 1000 MHz parameter CLKFBOUT_MULT_XCLK = 20, // 50*20=1000 MHz
parameter CLKOUT_DIV_XCLK = 10, // 100 MHz parameter CLKOUT_DIV_XCLK = 10, // 100 MHz
parameter CLKOUT_DIV_XCLK2X = 5, // 200 MHz parameter CLKOUT_DIV_XCLK2X = 5, // 200 MHz
parameter PHASE_CLK2X_XCLK = 0.000, parameter PHASE_CLK2X_XCLK = 0.000,
parameter BUF_CLK1X_XCLK = "BUFG", parameter BUF_CLK1X_XCLK = "BUFG",
parameter BUF_CLK1X_XCLK2X = "BUFG", parameter BUF_CLK1X_XCLK2X = "BUFG",
parameter CLKIN_PERIOD_SYNC = 20, // 24MHz parameter CLKIN_PERIOD_SYNC = 20, // 50MHz
parameter DIVCLK_DIVIDE_SYNC = 1, parameter DIVCLK_DIVIDE_SYNC = 1,
parameter CLKFBOUT_MULT_SYNC = 50, // 1000 MHz parameter CLKFBOUT_MULT_SYNC = 20, // 50*20=1000 MHz
parameter CLKOUT_DIV_SYNC = 10, // 100 MHz parameter CLKOUT_DIV_SYNC = 10, // 100 MHz
parameter BUF_CLK1X_SYNC = "BUFG", parameter BUF_CLK1X_SYNC = "BUFG",
......
...@@ -92,7 +92,7 @@ module cmd_frame_sequencer#( ...@@ -92,7 +92,7 @@ module cmd_frame_sequencer#(
reg we_fifo_wp; // enable writing to fifo write pointer memory reg we_fifo_wp; // enable writing to fifo write pointer memory
reg next_frame_rq; // request to switch to the new frame page, clear pointer for the one just left reg next_frame_rq; // request to switch to the new frame page, clear pointer for the one just left
wire pre_wpage_inc; wire pre_wpage_inc;
reg [PNTR_WIDH-1:0] fifo_wr_pointers_ram [0:7]; reg [PNTR_WIDH-1:0] fifo_wr_pointers_ram [0:15];
wire [PNTR_WIDH-1:0] fifo_wr_pointers_outw=fifo_wr_pointers_ram[wpage_w]; wire [PNTR_WIDH-1:0] fifo_wr_pointers_outw=fifo_wr_pointers_ram[wpage_w];
wire [PNTR_WIDH-1:0] fifo_wr_pointers_outr=fifo_wr_pointers_ram[page_r]; wire [PNTR_WIDH-1:0] fifo_wr_pointers_outr=fifo_wr_pointers_ram[page_r];
......
...@@ -69,16 +69,15 @@ create_clock -name axi_aclk -period 20 [get_nets -hierarchical *axi_aclk] ...@@ -69,16 +69,15 @@ create_clock -name axi_aclk -period 20 [get_nets -hierarchical *axi_aclk]
###create_generated_clock -name ddr3_mclk [get_nets */mclk_pre ] ###create_generated_clock -name ddr3_mclk [get_nets */mclk_pre ]
###create_generated_clock -name ddr3_clk_ref [get_nets */clk_ref_pre] ###create_generated_clock -name ddr3_clk_ref [get_nets */clk_ref_pre]
create_generated_clock -name ddr3_sdclk [get_nets -hierarchical sdclk_pre ] ####create_generated_clock -name ddr3_sdclk [get_nets -hierarchical sdclk_pre ]
create_generated_clock -name ddr3_clk [get_nets -hierarchical clk_pre ] ####create_generated_clock -name ddr3_clk [get_nets -hierarchical clk_pre ]
create_generated_clock -name ddr3_clk_div [get_nets -hierarchical clk_div_pre ] ####create_generated_clock -name ddr3_clk_div [get_nets -hierarchical clk_div_pre ]
#create_generated_clock -name ddr3_mclk [get_nets -hierarchical mclk_pre ] ####create_generated_clock -name ddr3_mclk [get_nets -hierarchical mclk_pre]
create_generated_clock -name mcntrl393_i/memctrl16_i/mcontr_sequencer_i/phy_cmd_i/phy_top_i/mclk ####create_generated_clock -name ddr3_clk_ref [get_nets -hierarchical clk_ref_pre ]
create_generated_clock -name ddr3_clk_ref [get_nets -hierarchical clk_ref_pre ]
# do not check timing between axi_aclk and other clocks. Code should provide correct asynchronous crossing of the clock boundary. # do not check timing between axi_aclk and other clocks. Code should provide correct asynchronous crossing of the clock boundary.
set_clock_groups -name ps_async_clock -asynchronous -group {axi_aclk} ####set_clock_groups -name ps_async_clock -asynchronous -group {axi_aclk}
# do not check timing between clk_axihp_pre and other clocks. Code should provide correct asynchronous crossing of the clock boundary. # do not check timing between clk_axihp_pre and other clocks. Code should provide correct asynchronous crossing of the clock boundary.
set_clock_groups -name ps_async_clock_axihp -asynchronous -group {clk_axihp_pre} ####set_clock_groups -name ps_async_clock_axihp -asynchronous -group {clk_axihp_pre}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment