Commit d6e9be6b authored by Andrey Filippov's avatar Andrey Filippov

fixing VDT warnings, splitting testbench file, adding modified primitive SLR version for simulation

parent 5d6f430e
......@@ -9,20 +9,50 @@
<natures>
</natures>
<linkedResources>
<link>
<name>ise_logs/ISEMap.log</name>
<type>1</type>
<location>/home/andrey/git/x353/ise_logs/ISEMap-20150726165658761.log</location>
</link>
<link>
<name>ise_logs/ISENGDBuild.log</name>
<type>1</type>
<location>/home/andrey/git/x353/ise_logs/ISENGDBuild-20150726165546847.log</location>
</link>
<link>
<name>ise_logs/ISEPAR.log</name>
<type>1</type>
<location>/home/andrey/git/x353/ise_logs/ISEPAR-20150726165911986.log</location>
</link>
<link>
<name>ise_logs/ISEPartgen.log</name>
<type>1</type>
<location>/home/andrey/git/x353/ise_logs/ISEPartgen-20150725173339957.log</location>
<location>/home/andrey/git/x353/ise_logs/ISEPartgen-20150726172041010.log</location>
</link>
<link>
<name>ise_logs/ISETraceMap.log</name>
<type>1</type>
<location>/home/andrey/git/x353/ise_logs/ISETraceMap-20150726213039147.log</location>
</link>
<link>
<name>ise_logs/ISExst.log</name>
<type>1</type>
<location>/home/andrey/git/x353/ise_logs/ISExst-20150726141146079.log</location>
<location>/home/andrey/git/x353/ise_logs/ISExst-20150726165049304.log</location>
</link>
<link>
<name>ise_state/x353-map.tgz</name>
<type>1</type>
<location>/home/andrey/git/x353/ise_state/x353-map-20150726165658761.tgz</location>
</link>
<link>
<name>ise_state/x353-ngdbuild.tgz</name>
<type>1</type>
<location>/home/andrey/git/x353/ise_state/x353-ngdbuild-20150726165546847.tgz</location>
</link>
<link>
<name>ise_state/x353-synth.tgz</name>
<type>1</type>
<location>/home/andrey/git/x353/ise_state/x353-synth-20150726135708468.tgz</location>
<location>/home/andrey/git/x353/ise_state/x353-synth-20150726165049304.tgz</location>
</link>
</linkedResources>
</projectDescription>
......@@ -18,7 +18,7 @@ Here is what makes it difficult:
2. Last verion of the ISE (it is ISE 14.7) can not use the older code "as is"
3. We were able to modify the Verilog code to be parsed by the current XST, but it does not
recognize some statements in the *.xcf constraints file (I had to rename original *.ucf to *.xcf).
4. Attempt to try old parser (Suggested by XST itself as the new parser is not the default for
4. Attempt to try old parser (suggested by XST itself as the new parser is not the default for
the Spartan 3e):
```
WARNING:Xst:3152 - You have chosen to run a version of XST which is not the default
......
......@@ -198,7 +198,7 @@ input hdr; // second green absolute, not difference
reg four_blocks_r;
reg scale_diff_r;
reg hdr_r;
reg [1:0] tile_margin_r;
reg [1:0] tile_margin_r; // SuppressThisWarning Veditor UNUSED
// reg [2:0] tile_shift_r;
reg [1:0] bayer_phase_r;
reg [3:0] bayer_phase_onehot;
......@@ -259,7 +259,7 @@ input hdr; // second green absolute, not difference
last_from_sdram <= en & preline_was_0 && (prepix[4:0]==0);
inc_sdrama <= en & (pre_first_pixel || (inc_sdrama && !last_from_sdram ));
if (pre_first_pixel) sdram_a9[8:0] <= sdrama_top_left[8:0];
else if (inc_sdrama) sdram_a9[8:0] <= sdram_a9[8:0] + (pre_start_of_line ? sdrama_line_inc[2:0] : 1);
else if (inc_sdrama) sdram_a9[8:0] <= sdram_a9[8:0] + (pre_start_of_line ? sdrama_line_inc[2:0] : 3'b1);
if (!en || memWasInit) sdram_a9_page[1:0] <= 2'h0;
else if (last_from_sdram && inc_sdrama) sdram_a9_page[1:0] <= sdram_a9_page[1:0]+1;
......@@ -445,7 +445,7 @@ input hdr; // second green absolute, not difference
if (first_pixel) begin
first0 <= willbe_first;
last0 <= (bcntr[17:0]==17'b0);
last0 <= (bcntr[17:0] == 18'b0);
end
if (ccv_out_start) begin
first <= first0;
......
......@@ -219,21 +219,21 @@ module compressor(// cwr, // CPU write - global clock
// 3 - enable compressor, enable repetitive mode
//
// control registetr bits
wire cr_w; // data written to cr (1 cycle) - now just to reset legacy IRQ
wire raw_dv; // input pixel data valid (pxd[7:0]may be sent to DMA buffer through multiplexor)
wire color_dv; // unused // color data valid (color_d[7:0] may be sent to DMA buffer through multiplexor)
wire [ 9:0] color_d; // data out stream from color space converter (6X64 blocks for each MCU - 4Y, Cb,Cr)
wire [ 2:0] color_tn; // tile number in an MCU from color space converter (valid @ color_dv)
wire [ 8:0] color_avr; // [8:0] DC (average value) 9 bit signed for Y: 9'h000..9'h0ff, for C - 9h100..9'h000..9'h0ff
wire color_first; // sending first MCU (valid @ ds)
wire color_last; // sending last MCU (valid @ ds)
wire cr_w; // data written to cr (1 cycle) - now just to reset legacy IRQ
wire raw_dv; // input pixel data valid (pxd[7:0]may be sent to DMA buffer through multiplexor) // SuppressThisWarning Veditor UNUSED
wire color_dv; // unused // color data valid (color_d[7:0] may be sent to DMA buffer through multiplexor)// SuppressThisWarning Veditor UNUSED
wire [ 9:0] color_d; // data out stream from color space converter (6X64 blocks for each MCU - 4Y, Cb,Cr)
wire [ 2:0] color_tn; // tile number in an MCU from color space converter (valid @ color_dv)
wire [ 8:0] color_avr; // [8:0] DC (average value) 9 bit signed for Y: 9'h000..9'h0ff, for C - 9h100..9'h000..9'h0ff
wire color_first; // sending first MCU (valid @ ds)
wire color_last; // sending last MCU (valid @ ds)
// wire dct_en;
wire dct_start;
wire dct_dv;
wire dct_start;
wire dct_dv; // SuppressThisWarning Veditor UNUSED
wire [12:0] dct_out;
wire dct_last_in; // output high during input of the last of 64 pixels in a 8x8 block
wire dct_pre_first_out; // 1 cycle ahead of the first output in a 64 block
wire dct_last_in; // output high during input of the last of 64 pixels in a 8x8 block
wire dct_pre_first_out; // 1 cycle ahead of the first output in a 64 block
wire [17:0] ntiles; //number of 16x16 MCU tiles in a frame to process
reg quant_start;
......@@ -245,7 +245,7 @@ module compressor(// cwr, // CPU write - global clock
wire focus_ds;
// wire enc_first;
wire enc_last;
wire enc_last; // SuppressThisWarning Veditor UNUSED
wire [15:0] enc_do;
wire enc_dv;
......@@ -664,8 +664,8 @@ FD i_is_compressing (.Q(is_compressing),.C(clk), .D(cmprs_en && (go_single || (i
// single-cycle @ negedge sclk
`ifdef debug_compressor
wire debug_bcntrIsZero;
wire [17:0] debug_bcntr;
wire debug_bcntrIsZero;
wire [17:0] debug_bcntr; //SuppressThisWarning Veditor UNUSED
`endif
color_proc i_color_proc(.clk(clk), // pixel clock 37.5MHz
.en(cmprs_en), // Enable (0 will reset states)
......@@ -1080,7 +1080,7 @@ module compr_ifc (clk, // compressor input clock (1/2 of sclk)
reg [23:0] cr;
///AF: reg [23:0] cr;
reg [17:0] ntiles;
reg [15:0] ntiles0;
reg [17:0] ntiles1;
......@@ -1095,7 +1095,8 @@ module compr_ifc (clk, // compressor input clock (1/2 of sclk)
assign rcs[1:0]={cwe && rs, cwe && ~rs};
reg rcs0_d, rcs0_dd, rcs1_d;
reg rcs0_d, rcs0_dd;
///AF: reg rcs1_d;
reg [2:0] rcs1d;
reg [1:0] is_compressing_sclk; // sync to negedge sclk
......@@ -1168,7 +1169,7 @@ module compr_ifc (clk, // compressor input clock (1/2 of sclk)
// always @ (posedge clk) cr[23:0] <=cri[23:0]; // make it sync
always @ (negedge sclk) if (rcs[1]) ntiles0[15:0] <= di[15:0];
// always @ (negedge sclk) if (rcs1_d) ntiles1[17:0] <= {di[15:0],ntiles0[15:0]};
always @ (negedge sclk) if (rcs1d[0]) ntiles1[17:0] <= {di[15:0],ntiles0[15:0]};
always @ (negedge sclk) if (rcs1d[0]) ntiles1[17:0] <= {di[ 1:0],ntiles0[15:0]};
always @ (negedge sclk) if (rcs1d[2]) ntiles1_prev[17:0] <= ntiles1[17:0];
// rcs1d[2:0]<={rcs1d[1:0],rcs[1]};
......
......@@ -129,7 +129,10 @@ module csconvert_jp4diff (en,
reg dly_1;
reg [14:0] dly_16;
reg dly_17;
wire start_out=bayer_phase[1]?(bayer_phase[0]?dly_17:dly_16):(bayer_phase[0]?dly_1:pre_first_in);
// wire start_out=bayer_phase[1]?(bayer_phase[0]?dly_17:dly_16):(bayer_phase[0]?dly_1:pre_first_in);
///AF2015 - What was supposed to be here for "dly_16" (15 bits, expected 1) - any non-zero or [14]?
// wire start_out=bayer_phase[1]?(bayer_phase[0]?dly_17: (|dly_16)):(bayer_phase[0]?dly_1:pre_first_in);
wire start_out=bayer_phase[1]?(bayer_phase[0]?dly_17: dly_16[14]):(bayer_phase[0]?dly_1:pre_first_in);
reg [7:0] iadr;
reg iadr_run;
reg [1:0] mux_plus_sel;
......
......@@ -234,7 +234,8 @@ assign mult_b[17:0] = use_coef ? {d1[10:0],{7{d1[0]}}}: mult_s[17:0];
use_k_dly[5:0]<={use_k_dly[4:0],use_coef};
acc_ldval <= !(|start2[7:6]);
if (acc_clear || (acc_corr && acc_blk[23])) acc_blk[23:0] <= {1'b0,{23{acc_ldval}}};
else if (acc_add) acc_blk[23:0] <= acc_blk[23:0]+mult_p[35:8];
///AF: else if (acc_add) acc_blk[23:0] <= acc_blk[23:0]+mult_p[35:8];
else if (acc_add) acc_blk[23:0] <= acc_blk[23:0]+mult_p[31:8];
if (acc_to_out) fdo[11:0] <= (|acc_blk[23:20])?12'hfff:acc_blk[19:8]; // positive, 0..0xfff
if (acc_to_out) sum_blk[22:0] <= acc_blk[22:0]; // accumulator for the sum ((a[i]*d[i])^2), copied at block end
......@@ -290,18 +291,12 @@ assign mult_b[17:0] = use_coef ? {d1[10:0],{7{d1[0]}}}: mult_s[17:0];
.RSTP(1'b0) // Synchronous reset input for the P port
);
RAM16X1D i_tn0 (.D(tni[0]),.DPO(tn[0]),.A0(ic[0]),.A1(ic[1]),.A2(1'b0),.A3(1'b0),.DPRA0(oc[0]),.DPRA1(oc[1]),.DPRA2(1'b0),.DPRA3(1'b0),.WCLK(clk),.WE(stb));
RAM16X1D i_tn1 (.D(tni[1]),.DPO(tn[1]),.A0(ic[0]),.A1(ic[1]),.A2(1'b0),.A3(1'b0),.DPRA0(oc[0]),.DPRA1(oc[1]),.DPRA2(1'b0),.DPRA3(1'b0),.WCLK(clk),.WE(stb));
RAM16X1D i_tn2 (.D(tni[2]),.DPO(tn[2]),.A0(ic[0]),.A1(ic[1]),.A2(1'b0),.A3(1'b0),.DPRA0(oc[0]),.DPRA1(oc[1]),.DPRA2(1'b0),.DPRA3(1'b0),.WCLK(clk),.WE(stb));
RAM16X1D i_first (.D(firsti),.DPO(first),.A0(ic[0]),.A1(ic[1]),.A2(1'b0),.A3(1'b0),.DPRA0(oc[0]),.DPRA1(oc[1]),.DPRA2(1'b0),.DPRA3(1'b0),.WCLK(clk),.WE(stb));
RAM16X1D i_last (.D(lasti), .DPO(last), .A0(ic[0]),.A1(ic[1]),.A2(1'b0),.A3(1'b0),.DPRA0(oc[0]),.DPRA1(oc[1]),.DPRA2(1'b0),.DPRA3(1'b0),.WCLK(clk),.WE(stb));
RAM16X1D i_tn0 (.D(tni[0]),.DPO(tn[0]),.A0(ic[0]),.A1(ic[1]),.A2(1'b0),.A3(1'b0),.DPRA0(oc[0]),.DPRA1(oc[1]),.DPRA2(1'b0),.DPRA3(1'b0),.WCLK(clk),.WE(stb),.SPO());
RAM16X1D i_tn1 (.D(tni[1]),.DPO(tn[1]),.A0(ic[0]),.A1(ic[1]),.A2(1'b0),.A3(1'b0),.DPRA0(oc[0]),.DPRA1(oc[1]),.DPRA2(1'b0),.DPRA3(1'b0),.WCLK(clk),.WE(stb),.SPO());
RAM16X1D i_tn2 (.D(tni[2]),.DPO(tn[2]),.A0(ic[0]),.A1(ic[1]),.A2(1'b0),.A3(1'b0),.DPRA0(oc[0]),.DPRA1(oc[1]),.DPRA2(1'b0),.DPRA3(1'b0),.WCLK(clk),.WE(stb),.SPO());
RAM16X1D i_first (.D(firsti),.DPO(first),.A0(ic[0]),.A1(ic[1]),.A2(1'b0),.A3(1'b0),.DPRA0(oc[0]),.DPRA1(oc[1]),.DPRA2(1'b0),.DPRA3(1'b0),.WCLK(clk),.WE(stb),.SPO());
RAM16X1D i_last (.D(lasti), .DPO(last), .A0(ic[0]),.A1(ic[1]),.A2(1'b0),.A3(1'b0),.DPRA0(oc[0]),.DPRA1(oc[1]),.DPRA2(1'b0),.DPRA3(1'b0),.WCLK(clk),.WE(stb),.SPO());
RAMB16_S18_S18 i_focus_dct_tab (
.DOA(tdo[15:0]), // Port A 16-bit Data Output
......
......@@ -68,9 +68,9 @@ module huffman (pclk, // half frequency, sync to incoming data
output gotLastBlock;
reg test_lbw;
wire [19:0] tables_out;
wire [15:0] hcode; // table output huffman code (1..16 bits)
wire [15:0] hcode; // table output huffman code (1..16 bits)
wire [ 3:0] hlen; // table - code length only 4 LSBs are used
wire [11:0] unused;
wire [11:0] unused; // SuppressThisWarning Veditor UNUSED
reg [ 7:0] haddr_r; // index in huffman table
wire [ 7:0] haddr_next;
wire [ 8:0] haddr; // index in huffman table (after latches)
......@@ -335,18 +335,18 @@ module huff_fifo (pclk,
output dav;
output[15:0] q;
reg [9:0] wa;
reg [9:0] sync_wa; // delayed wa, re-calculated at output clock
reg [9:0] wa;
reg [9:0] sync_wa; // delayed wa, re-calculated at output clock
reg [9:0] ra_r;
wire [9:0] ra;
wire [15:0] q;
reg load_q;
wire [15:0] q;
reg load_q; // SuppressThisWarning Veditor VDT_BUG
wire [15:0] fifo_o;
reg ds1; // ds delayed by one pclk to give time to block ram to write data. Not needed likely.
reg synci;
reg [1:0] synco;
reg sync_we; // single clk period pulse for each ds@pclk
reg en2x; // en sync to clk;
reg sync_we; // single clk period pulse for each ds@pclk
reg en2x; // en sync to clk;
reg re_r;
wire re;
......@@ -404,7 +404,6 @@ module huff_fifo (pclk,
LD i_ra1 (.Q(ra[1]),.G(clk),.D(ra_r[1]));
LD i_ra0 (.Q(ra[0]),.G(clk),.D(ra_r[0]));
always @ (posedge clk) begin
// load_q <= dav?want_read:re_r;
load_q <= dav?want_read_early:re_r;
end
LD_1 i_q15 (.Q( q[15]),.G(clk),.D(load_q?fifo_o[15]:q[15]));
......
......@@ -223,6 +223,7 @@ This value divided by 2raised to 8 is equivalent to ignoring the 8 lsb bits of t
reg[9:0] xa0_in, xa1_in, xa2_in, xa3_in, xa4_in, xa5_in, xa6_in, xa7_in;
reg[9:0] xa0_reg, xa1_reg, xa2_reg, xa3_reg, xa4_reg, xa5_reg, xa6_reg, xa7_reg;
reg[9:0] addsub1a_comp,addsub2a_comp,addsub3a_comp,addsub4a_comp;
reg[10:0] add_sub1a,add_sub2a,add_sub3a,add_sub4a;
reg save_sign1a, save_sign2a, save_sign3a, save_sign4a;
reg[17:0] p1a,p2a,p3a,p4a;
......@@ -384,15 +385,22 @@ always @ (negedge clk)
// 9th clk for registering shifted input and 10th clk for add_sub
// to synchronize the i value to the add_sub value, i value is incremented
// only after 10 clks
// Adding these wires to get rid of the MSB that is always 0
wire [10:0] addsub1a_comp_w = add_sub1a[10]? (-add_sub1a) : add_sub1a;
wire [10:0] addsub2a_comp_w = add_sub2a[10]? (-add_sub2a) : add_sub2a;
wire [10:0] addsub3a_comp_w = add_sub3a[10]? (-add_sub3a) : add_sub3a;
wire [10:0] addsub4a_comp_w = add_sub4a[10]? (-add_sub4a) : add_sub4a;
always @ (negedge clk) begin
save_sign1a <= add_sub1a[10];
save_sign2a <= add_sub2a[10];
save_sign3a <= add_sub3a[10];
save_sign4a <= add_sub4a[10];
addsub1a_comp <= add_sub1a[10]? (-add_sub1a) : add_sub1a;
addsub2a_comp <= add_sub2a[10]? (-add_sub2a) : add_sub2a;
addsub3a_comp <= add_sub3a[10]? (-add_sub3a) : add_sub3a;
addsub4a_comp <= add_sub4a[10]? (-add_sub4a) : add_sub4a;
addsub1a_comp <= addsub1a_comp_w[9:0]; //add_sub1a[10]? (-add_sub1a) : add_sub1a;
addsub2a_comp <= addsub2a_comp_w[9:0]; //add_sub2a[10]? (-add_sub2a) : add_sub2a;
addsub3a_comp <= addsub3a_comp_w[9:0]; //add_sub3a[10]? (-add_sub3a) : add_sub3a;
addsub4a_comp <= addsub4a_comp_w[9:0]; //add_sub4a[10]? (-add_sub4a) : add_sub4a;
end
assign p1a_all = addsub1a_comp * memory1a[15:0];
......@@ -504,7 +512,7 @@ wire sxregs;
wire sxregs_d8;
reg enable_toggle;
reg en_started;
wire disdv;
SRL16 i_endv (.Q(endv), .A0(1'b0), .A1(1'b1), .A2(1'b1), .A3(1'b1), .CLK(clk), .D(start)); // dly=14+1
SRL16 i_disdv (.Q(disdv), .A0(1'b0), .A1(1'b1), .A2(1'b1), .A3(1'b1), .CLK(clk), .D(rd_cntr[5:0]==6'h3f)); // dly=14+1
......@@ -621,6 +629,11 @@ always @ (posedge clk)
add_sub4b <= ({xb4_reg[15],xb4_reg[15:0]} - {xb3_reg[15],xb3_reg[15:0]});
end
// Adding these wires to get rid of the MSB that is always 0
wire [16:0] addsub1b_comp_w = add_sub1b[16]? (-add_sub1b) : add_sub1b;
wire [16:0] addsub2b_comp_w = add_sub2b[16]? (-add_sub2b) : add_sub2b;
wire [16:0] addsub3b_comp_w = add_sub3b[16]? (-add_sub3b) : add_sub3b;
wire [16:0] addsub4b_comp_w = add_sub4b[16]? (-add_sub4b) : add_sub4b;
always @ (posedge clk) begin
// save_sign1b <= add_sub1b[10];
......@@ -635,21 +648,26 @@ always @ (posedge clk) begin
save_sign2b <= add_sub2b[16];
save_sign3b <= add_sub3b[16];
save_sign4b <= add_sub4b[16];
addsub1b_comp <= add_sub1b[16]? (-add_sub1b) : add_sub1b;
addsub2b_comp <= add_sub2b[16]? (-add_sub2b) : add_sub2b;
addsub3b_comp <= add_sub3b[16]? (-add_sub3b) : add_sub3b;
addsub4b_comp <= add_sub4b[16]? (-add_sub4b) : add_sub4b;
addsub1b_comp <= addsub1b_comp_w[15:0]; // add_sub1b[16]? (-add_sub1b) : add_sub1b;
addsub2b_comp <= addsub2b_comp_w[15:0]; // add_sub2b[16]? (-add_sub2b) : add_sub2b;
addsub3b_comp <= addsub3b_comp_w[15:0]; // add_sub3b[16]? (-add_sub3b) : add_sub3b;
addsub4b_comp <= addsub4b_comp_w[15:0]; // add_sub4b[16]? (-add_sub4b) : add_sub4b;
end
// assign p1b_all = addsub1b_comp * memory1a[15:0];
// assign p2b_all = addsub2b_comp * memory2a[15:0];
// assign p3b_all = addsub3b_comp * memory3a[15:0];
// assign p4b_all = addsub4b_comp * memory4a[15:0];
assign p1b_all = addsub1b_comp[15:0] * memory1a[15:0];
assign p2b_all = addsub2b_comp[15:0] * memory2a[15:0];
assign p3b_all = addsub3b_comp[15:0] * memory3a[15:0];
assign p4b_all = addsub4b_comp[15:0] * memory4a[15:0];
///AF2015:
// assign p1b_all = addsub1b_comp[15:0] * memory1a[15:0];
// assign p2b_all = addsub2b_comp[15:0] * memory2a[15:0];
// assign p3b_all = addsub3b_comp[15:0] * memory3a[15:0];
// assign p4b_all = addsub4b_comp[15:0] * memory4a[15:0];
assign p1b_all = addsub1b_comp * memory1a;
assign p2b_all = addsub2b_comp * memory2a;
assign p3b_all = addsub3b_comp * memory3a;
assign p4b_all = addsub4b_comp * memory4a;
always @ (posedge clk)
begin
......
......@@ -119,7 +119,7 @@ module camsync (sclk, // @negedge
reg [31:0] restart_cntr; // restart period counter
reg [1:0] restart_cntr_run; // restart counter running
wire restart; // restart out sync
reg [8:0] out_pulse_cntr;
///AF: reg [8:0] out_pulse_cntr;
reg trigger_condition; // GPIO input trigger condition met
reg trigger_condition_d; // GPIO input trigger condition met, delayed (for edge detection)
reg trigger_condition_filtered; // trigger condition filtered
......@@ -140,7 +140,7 @@ module camsync (sclk, // @negedge
wire pre_start_out_pulse;
reg start_out_pulse; /// start generation of output pulse. In internal trigger mode uses delay counter, in external - no delay
reg pre_start;
///AF: reg pre_start;
reg [31:0] pre_period;
reg [ 7:0] bit_length='hff; /// Output pulse duration or bit duration in timestamp mode
/// input will be filtered with (bit_length>>2) duration
......@@ -228,7 +228,7 @@ module camsync (sclk, // @negedge
// if (wen[3]) repeat_period[31:0] <= did[31:0];
if (wen[3]) pre_period[31:0] <= did[31:0];
if (wen[3]) high_zero = did[31:8]==24'b0;
if (wen[3]) high_zero <= did[31:8]==24'b0;
// start <= wen[3] && (did[31:0]!=32'h0);
......
......@@ -45,7 +45,7 @@ module dcm333(
output xclk;
output SDCLK, SDNCLK;
input [1:0] phsel;
input sdcl_fb;
input sdcl_fb; // SuppressThisWarning Veditor UNUSED - was designed to use external pin sync (maybe still use it?)
input dcm_rst, dcm_incdec, dcm_en, dcm_clk;
output dcm_done;
......
......@@ -160,7 +160,7 @@ FD_1 i_initialized ( .Q(initialized), .C(sclk), .D(por[1] && ( initialized || (r
we_fifo_wp <= wen_d[1] || wpage0_inc;
if (wen_d[1]) fifo_wr_pointers_outw_r[5:0] <= fifo_wr_pointers_outw[5:0];
if (we_fifo_wp) fifo_wr_pointers[wpage_w[2:0]] <= wpage0_inc_d? 7'h0:(fifo_wr_pointers_outw_r[5:0]+1);
if (we_fifo_wp) fifo_wr_pointers[wpage_w[2:0]] <= wpage0_inc_d? 6'h0:(fifo_wr_pointers_outw_r[5:0]+1);
fifo_wr_pointers_outr_r[5:0] <= fifo_wr_pointers_outr[5:0]; // just register distri
// command seq fifo (RAMB16_S9_S18)
......
......@@ -131,7 +131,7 @@ module dma_fifo_sync ( clk, // system clock, 120MHz? (currentle negedge used)
burst_start_sync[1:0] <= {burst_start_sync[0],~first_four_r[2] & first_four_r[1]};
first_four_r[2:0]={first_four_r[1:0],first_four};
first_four_r[2:0] <= {first_four_r[1:0],first_four};
empties[3:0] <= {4{!rst && (infifo[9:0]==10'h0) && !dreq && !dack_r[1]}} & {empties[2:0],1'b1};
......
......@@ -201,8 +201,8 @@ module i2c_writeonly (sclk, // @negedge
bytes_cmd <= wen_d[0] && is_ctl && di_1[11];
dly_cmd <= wen_d[0] && is_ctl && di_1[ 8];
// setting control parameters
if (bytes_cmd) i2c_bytes[1:0]=di_2[10:9];
if (dly_cmd) i2c_dly[7:0] =di_2[ 7:0];
if (bytes_cmd) i2c_bytes[1:0] <= di_2[10:9];
if (dly_cmd) i2c_dly[7:0] <= di_2[ 7:0];
if (reset_cmd || (run_cmd && !di_2[12])) i2c_enrun <= 1'b0;
else if (run_cmd && di_2[12]) i2c_enrun <= 1'b1;
// write pointer memory
......@@ -220,7 +220,7 @@ module i2c_writeonly (sclk, // @negedge
we_fifo_wp <= wen_d[1] || wpage0_inc;
if (wen_d[1]) fifo_wr_pointers_outw_r[5:0] <= fifo_wr_pointers_outw[5:0];
if (we_fifo_wp) fifo_wr_pointers[wpage_w[2:0]] <= wpage0_inc_d? 7'h0:(fifo_wr_pointers_outw_r[5:0]+1);
if (we_fifo_wp) fifo_wr_pointers[wpage_w[2:0]] <= wpage0_inc_d? 6'h0:(fifo_wr_pointers_outw_r[5:0]+1);
fifo_wr_pointers_outr_r[5:0] <= fifo_wr_pointers_outr[5:0]; // just register distri
// command i2c fifo (RAMB16_S9_S18)
......
......@@ -55,7 +55,7 @@ module interrupts_vector(sclk, // @negedge
wire [15:0] irq_insa;
reg [15:0] irq_insb;
reg [15:0] irq_insc; //single cycle sync interrupt request.
wire [15:0] irq_rst;
///AF: wire [15:0] irq_rst;
reg rst_rqs, en_rqs, dis_rqs, pre_set_irqv, set_irqv;
reg [ 3:0] irqv_a; // irq vectors table write address
reg [ 7:0] irqv_d; // irq vectors table write data
......@@ -190,7 +190,7 @@ module interrupts_vector(sclk, // @negedge
FD_1 i_irq_um_15 (.C(sclk), .D(~(rst_rq[15]) & (irq_insc[15] | irq_um[15])), .Q(irq_um[15]));
myRAM16X8D_1 i_vecttab (.D(irqv_d[7:0]), .WE(set_irqv), .clk(sclk), .AW(irqv_a[3:0]), .AR(irqn_r[3:0]), .QR(irqv[7:0]));
myRAM16X8D_1 i_vecttab (.D(irqv_d[7:0]), .WE(set_irqv), .clk(sclk), .AW(irqv_a[3:0]), .AR(irqn_r[3:0]), .QR(irqv[7:0]), .QW());
always @ (negedge sclk) begin
if (pre_wen) did[15:0] <= di[15:0];
......@@ -208,8 +208,8 @@ module interrupts_vector(sclk, // @negedge
set_irqv <= pre_set_irqv;
if (pre_set_irqv) irqv_a[3:0] <= did[11:8];
if (pre_set_irqv) irqv_d[7:0] <= did[ 7:0];
rst_rq[15:0] <= ({15{rst_rqs}} & did[15:0]) | rst_rq_inta[15:0];
dis_rq[15:0] <= ({15{dis_rqs}} & did[15:0]);
rst_rq[15:0] <= ({16{rst_rqs}} & did[15:0]) | rst_rq_inta[15:0];
dis_rq[15:0] <= ({16{dis_rqs}} & did[15:0]);
// en_rq [15:0] <= ({15{ en_rqs}} & did[15:0]);
inta_s[5:0] <= {inta_s[4:0], inta};
......
......@@ -539,10 +539,15 @@ module dqs2 (c0,/*c90,*/c270,
input c0,/*c90,*/c270,t;
inout UDQS, LDQS;
output udqsr90,ldqsr90,udqsr270,ldqsr270;
wire t0,t1,t2,tr;
wire t0,t1,tr;
///AF: wire t2;
FD_1 #(.INIT(1'b1)) i_t0 (.C(c0),.D(t),.Q(t0));
FD #(.INIT(1'b1)) i_t1 (.C(c0),.D(t0),.Q(t1));
FD #(.INIT(1'b1)) i_t2 (.C(c270),.D(t0),.Q(t2));
///AF: FD #(.INIT(1'b1)) i_t2 (.C(c270),.D(t0),.Q(t2));
assign tr= t1;
dqs2_0 i_dqsu(.c0(c0),/*.c90(c90),*/.c270(c270),.t(tr),.q({udqsr270,udqsr90}),.dq(UDQS));
dqs2_0 i_dqsl(.c0(c0),/*.c90(c90),*/.c270(c270),.t(tr),.q({ldqsr270,ldqsr90}),.dq(LDQS));
endmodule
module dqs2_0(c0,/*c90,*/c270,t,q,dq);
......@@ -563,7 +568,7 @@ module dqs2_0(c0,/*c90,*/c270,t,q,dq);
// as in IFDDRCPE.v
FDCPE_1 #(.INIT(1'b1)) i_q0 (.C(c270), .CE(1'b1),.CLR(1'b0),.D(qp),.PRE(1'b0),.Q(q[0]));
FDCPE_1 #(.INIT(1'b0)) i_q0 (.C(c270), .CE(1'b1),.CLR(1'b0),.D(qp),.PRE(1'b0),.Q(q[0]));
FDCPE i_q1 (.C(c270),.CE(1'b1),.CLR(1'b0),.D(qp),.PRE(1'b0),.Q(q[1]));
// synthesis attribute IOB of i_q0 is "TRUE"
// synthesis attribute IOB of i_q1 is "TRUE"
......@@ -577,7 +582,7 @@ endmodule
module sddrdm(c0,/*c90,*/c270,d,dq);
input c0,/*c90,*/c270;
input [1:0] d;
inout dq;
inout dq; //SuppressThisWarning Veditor UNUSED
sddrdm0 i_dq (.c0(c0),/*.c90(c90),*/.c270(c270),.d(d),.dq(dq));
// s--ynthesis attribute KEEP_HIERARCHY of i_dq is "TRUE"
endmodule
......
......@@ -260,7 +260,7 @@ module timestamp353( mclk, // system clock (negedge)
else if (hacti && !hact_d) vact_pend <= 1'b0;
if (hacti && !hact_d) odd_line <= !vact_pend && !odd_line;
// if (hacti && !hact_d) line[3:0] <= vact_pend?4'h1:{line[2:0],1'b0};
if (hacti && !hact_d) line[2:0] <= vact_pend?4'h1:{line[1:0],1'b0};
if (hacti && !hact_d) line[2:0] <= vact_pend ? 3'h1 : {line[1:0],1'b0};
if (hacti && !hact_d) ts_line <= tsmode[1]? (vact_pend || line[0] ) : (!vact_pend && (line[1] || line[2]));
......@@ -282,9 +282,9 @@ module timestamp353( mclk, // system clock (negedge)
// else ts_data[25:0]<= 16'h0;
ts_active_r <= ts_active;
ts_line_r <= ts_line;
if (ts_active_r) ts_data[25:0]<= {ts_data[24:0],1'b0};
else if (ts_line_r) ts_data[25:0]<= odd_line?sec[31:6]:{sec[5:0],usec[19:0]};
else ts_data[25:0]<= 16'h0;
if (ts_active_r) ts_data[25:0] <= {ts_data[24:0],1'b0};
else if (ts_line_r) ts_data[25:0] <= odd_line?sec[31:6]:{sec[5:0],usec[19:0]};
else ts_data[25:0] <= 26'h0;
end
endmodule
......
......@@ -135,7 +135,7 @@ FDCE_1 i_enable_mot_clk (.C(clk),.CE(we_ctl && di_d[1]),.CLR(1'b0),
// reset at simulation
assign sequence_next[1:0]=sequence[1:0]+1;
assign sequence_next[3:2]=(sequence[1:0]==3'b11)?((sequence[3:2]==3'b11)?2'b01:(sequence[3:2]+1)):sequence[3:2];
assign sequence_next[3:2]=(sequence[1:0]==2'b11)?((sequence[3:2]==2'b11)?2'b01:(sequence[3:2]+1)):sequence[3:2];
FD i_sequence_0(.C(xclk),.D(sequence_next[0]), .Q(sequence[0]));
FD i_sequence_1(.C(xclk),.D(sequence_next[1]), .Q(sequence[1]));
FD i_sequence_2(.C(xclk),.D(sequence_next[2]), .Q(sequence[2]));
......@@ -342,6 +342,9 @@ endmodule
/// Combine old (freom register file) /new encoded periods, inc/dec pulses to prepare a 6-bit (partial) index for a RAM table.
/// Together with the position error (another 6 bits) the full 12-bit undex provides 1 4-bit PWM code from the RAM table
/// Updates direction immediately, period - if inc_dec or when new period > saved period (so it will be updated even if the motor is stopped)
/// AF2015: Replace eith a function?
module calc_speed (clk, // posedge, 80 MHz
en_in, // enable (just for simulation), for real - let it on even when motors are off
process, // increment (with limit) period
......@@ -355,11 +358,11 @@ module calc_speed (clk, // posedge, 80 MHz
enc_period_this // [4:0] encoded period for the register file/ table index
);
parameter IGNORE_EN=1;
input clk; // posedge, 80MHz
input clk; // posedge, 80MHz // SuppressThisWarning Veditor UNUSED
input en_in; // enable, 0 resets period counter - simulation only
input process; // increment (with limit) period
input process; // increment (with limit) period // SuppressThisWarning Veditor UNUSED
input inc_dec; // encoder pulse detected
input inc; // encoder position increment
input inc; // encoder position increment // SuppressThisWarning Veditor UNUSED
input dec; // encoder position decrement
input [4:0] enc_period_curr; // encoded current period (still running if !inc_dec)
input dir_last; // last stored direction (from register file)
......@@ -560,14 +563,14 @@ module motor_pwm( clk, // posedge, 80MHz
output [2:0] new_pwm; // [2:0]
output [1:0] mot; // [1:0] - data to be copied to the motor outputs
reg [9:0] pwm_cycle_count;
reg [9:0] pwm_cycle_count; /// AF2015: Seems to be a bug - 2 MSBs are never used (only 8 LSB)
reg pwm_cycle_next;
reg [3:0] pwm_delay_count;
reg [3:0] pwm_delay_count; /// AF2015: Seems to be a bug - 1 MSB is never used (only 3 LSB)
reg pwm_delay_end;
reg [2:0] pwm_phase;
wire [2:0] spreaded_phase;
wire pwn_on;
wire pwn_off;
wire pwn_on; // SuppressThisWarning Veditor UNUSED
wire pwn_off; // SuppressThisWarning Veditor UNUSED
wire [2:0] new_pwm;
wire stop_cmd;
wire [3:0] pwm_diff;
......@@ -575,7 +578,7 @@ module motor_pwm( clk, // posedge, 80MHz
assign spreaded_phase[2:0]= pwm_phase[2:0]+spread[2:0];
assign pwn_on= pwm_cycle_next && (spreaded_phase == 0) && (pwm_code != 0);
assign pwn_off=pwm_cycle_next && (spreaded_phase == pwm_code);
assign pwn_off=pwm_cycle_next && (spreaded_phase == pwm_code[2:0]);
assign stop_cmd= !en || (pwm_code==8) ;
assign pwm_diff[3:0]={1'b0,pwm_code[2:0]}-{1'b0,spreaded_phase[2:0]};
......@@ -584,10 +587,14 @@ module motor_pwm( clk, // posedge, 80MHz
assign new_pwm[2]=!en || (pwm_cycle_next? (new_pwm[1:0]!=cur_pwm[1:0]):(cur_pwm[2]&& !pwm_delay_end));
assign mot[1:0]=(stop_cmd || new_pwm[2])? 2'b0:(new_pwm[1]?{new_pwm[0],!new_pwm[0]}:2'b11);
always @ (posedge clk) if (pre_first) begin // change these registers once per cycle of all motors
pwm_cycle_count<= (!en || (pwm_cycle_count==0))?pwm_cycle:(pwm_cycle_count-1);
/// AF2015: pwm_cycle_count<= (!en || (pwm_cycle_count==0)) ? pwm_cycle:(pwm_cycle_count-1);
pwm_cycle_count<= (!en || (pwm_cycle_count==0)) ? {2'b0,pwm_cycle}:(pwm_cycle_count-1);
pwm_cycle_next<= en && (pwm_cycle_count==0);
// pwm_delay_count<= (!en || (pwm_delay_count==0))?0:(pwm_cycle_next?pwm_delay: (pwm_delay_count-1));
pwm_delay_count<= (!en || pwm_cycle_next)?pwm_delay:((pwm_delay_count==0)?0: (pwm_delay_count-1));
/// AF2015: pwm_delay_count<= (!en || pwm_cycle_next)?pwm_delay:((pwm_delay_count==0)?0: (pwm_delay_count-1));
pwm_delay_count<= (!en || pwm_cycle_next)?{1'b0,pwm_delay}:((pwm_delay_count==0)? 4'b0: (pwm_delay_count-1));
pwm_delay_end<= en && (pwm_delay_count==1);
pwm_phase<= (!en)? 0: (pwm_phase + pwm_cycle_next); // divide by 8
end
......
......@@ -311,7 +311,7 @@ imu_timestamps i_imu_timestamps (
.ts_ackn(timestamp_ackn[3:0]), // timestamp for this channel is stored
.ra({channel[1:0],timestamp_sel[1:0]}), // read address (2 MSBs - channel number, 2 LSBs - usec_low, (usec_high ORed with channel <<24), sec_low, sec_high
.dout(timestamps_rdata[15:0]));// output data
wire [0:0] debug_state_unused;
wire [0:0] debug_state_unused; // SuppressThisWarning Veditor UNUSED
rs232_rcv i_rs232_rcv (.xclk(xclk), // half frequency (80 MHz nominal)
.bitHalfPeriod(bitHalfPeriod[15:0]), // half of the serial bit duration, in xclk cycles
.ser_di(ser_di), // rs232 (ttl) serial data in
......@@ -415,7 +415,7 @@ module logger_arbiter(xclk, // 80 MHz, posedge
reg [3:1] chn1hot; // channels 1-hot - granted and ready, priority applied
reg rq_not_zero; // at least one channel is ready for processing (same time as chn1hot[3:0])
reg [1:0] channel;
reg start;
///AF: reg start;
reg busy;
wire wstart;
reg ts_en;
......@@ -462,7 +462,7 @@ module logger_arbiter(xclk, // 80 MHz, posedge
channels_ready[2] & ~|channels_ready[1:0],
channels_ready[1] & ~channels_ready[0]};
start <= wstart;
///AF: start <= wstart;
if ((seq_cntr[4:0]=='h1e) || rst) busy <= 1'b0;
else if (rq_not_zero) busy <= 1'b1;
......@@ -765,10 +765,12 @@ module imu_spi ( sclk, // system clock, negedge
stall_dur[7:0] <= stall_dur_mclk[7:0];
bit_duration_zero <= (bit_duration[7:0]==8'h0);
clk_div[1:0]=en?(clk_div[1:0]+1):2'b0;
clk_en[3:0] <= {clk_en[2:0],clk_div[1:0]==2'h3};
clk_div[1:0] <= en?(clk_div[1:0]+1):2'b0;
clk_en[3:0] <= {clk_en[2:0],clk_div[1:0]==2'h3};
if (bit_duration_zero || (bit_duration_cntr[7:0]==8'h0)) bit_duration_cntr[7:0]<=bit_duration[7:0];
else bit_duration_cntr[7:0] <= bit_duration_cntr[7:0]-1;
clk_en[3:0] <= {clk_en[2:0],bit_duration_cntr[7:0]==8'h3}; // change 9'h3 to enforce frequency limit
end
......@@ -795,7 +797,7 @@ module imu_spi ( sclk, // system clock, negedge
else if (end_spi) seq_counter[9:0] <= 10'h001;
else if (clk_en[3] && (seq_state[1:0]!=2'h0) && !stall) seq_counter[9:0] <= seq_counter[9:0] - 1;
set_mosi_prepare <= clk_en[2] && first_prepare;
set_mosi_spi <= clk_en[2] && (seq_state[1:0]==2'h2) && (seq_counter[4:0]==5'h1f) && (seq_counter[9:5]!=6'h0) && !stall; // last word use zero
set_mosi_spi <= clk_en[2] && (seq_state[1:0]==2'h2) && (seq_counter[4:0]==5'h1f) && (seq_counter[9:5] != 5'h0) && !stall; // last word use zero
// no stall before the first word
if (!en) skip_stall <= 1'b0;
......@@ -1109,7 +1111,7 @@ module rs232_rcv (xclk, // half frequency (80 MHz nominal)
reg wait_just_pause;
wire wstart;
wire [4:0] debug;
reg [4:0] debug0; // {was_ts_stb, was_start, was_error, was_ser_di_1, was_ser_di_0} - once after reset
reg [4:0] debug0; // {was_ts_stb, was_start, was_error, was_ser_di_1, was_ser_di_0} - once after reset // SuppressThisWarning Veditor UNUSED
assign reset_wait_pause= (restart[1] && !restart[0]) || (wait_pause && !wait_start && !ser_di);
assign error=!ser_filt_di && last_half_bit && bit_half_end && receiving_byte;
assign sample_bit=shift_en && bit_half_end && !bit_cntr[0];
......@@ -1161,7 +1163,7 @@ module rs232_rcv (xclk, // half frequency (80 MHz nominal)
if (ser_rst) debug0[4:0] <=5'b0;
else debug0[4:0] <= debug | {ts_stb,start,error,ser_di_d,~ser_di_d};
else debug0[4:0] <= debug | {ts_stb,start,error,ser_di_d[0],~ser_di_d[0]};
end
endmodule
......@@ -1571,7 +1573,7 @@ module imu_timestamps (
rq_sclk2[1] & ~rq_sclk2[0],
rq_sclk2[0]};
pri_sclk_d[3:0] <= pri_sclk[3:0];
proc[9:0] <= {proc[9:0], wstart};
proc[9:0] <= {proc[8:0], wstart};
if (proc[0]) wa[3:2] <= {|pri_sclk_d[3:2], pri_sclk_d[3] | pri_sclk_d[1]};
if (proc[0]) sec_latched[31:0] <= sec[31:0];
if (proc[0]) usec_latched[19:0] <= usec[19:0];
......
......@@ -7,17 +7,15 @@ module testbench();
parameter CLK2WA= 1;
parameter WA2WD= 1;
parameter aaaa=0;
parameter aaaa=1;
///AF: parameter aaaa=0;
///AF: parameter aaaa=1;
reg sclk,xclk;
reg [15:0] wd;
reg wa;
reg we;
wire [15:0] rd;
// reg [1:0] encod1;
// reg [1:0] encod2;
// reg [1:0] encod3;
wire [31:0] rd; // SuppressThisWarning Veditor UNUSED
wire [1:0] encod1;
wire [1:0] encod2;
wire [1:0] encod3;
......@@ -71,7 +69,7 @@ motor i_motor3 (.clk(xclk),
initial begin
$dumpfile("motors.lxt");
$dumpvars(0,testbench.i_three_motor_driver);
$dumpvars(0,testbench.i_three_motor_driver); // SuppressThisWarning Veditor VDT_BUG
/*
$dumpvars(0,testbench.i_three_motor_driver.addr);
$dumpvars(0,testbench.i_three_motor_driver.reg_addr);
......@@ -95,7 +93,7 @@ motor i_motor3 (.clk(xclk),
$dumpvars(0,testbench.i_three_motor_driver.i_motor_pwm);
*/
$dumpvars(0,testbench.rd);
$dumpvars(0,testbench.i_motor1);
$dumpvars(0,testbench.i_motor1); // SuppressThisWarning Veditor VDT_BUG - it is resolved
$dumpvars(0,testbench.i_motor2.position);
$dumpvars(0,testbench.i_motor2.speed);
$dumpvars(0,testbench.i_motor3.position);
......@@ -194,7 +192,7 @@ $finish;
task program_table;
reg [31:0] data[0:511];
reg [31:0] data[0:511]; // SuppressThisWarning Veditor VDT_BUG - assigned in system task
integer i;
begin
$readmemh("motor.dat",data);
......@@ -216,12 +214,12 @@ module motor (clk,
enc);
parameter SAMPLE_PERIOD=100; // ns
parameter VMAX=1000.0; /// pulses/sec
parameter EMF= 0.5; /// part of the voltage that is caused by rotation (remaining goes to current -> force->acceleration). Not yet used
parameter EMF= 0.5; /// part of the voltage that is caused by rotation (remaining goes to current -> force->acceleration). Not yet used // SuppressThisWarning Veditor UNUSED
// parameter ACCEL=10.0; /// number of VMAX/sec if full power is applied, speed==0
parameter ACCEL=300.0; /// number of VMAX/sec if full power is applied, speed==0
// no simulation of friction yet
input clk;
input en;
input clk; // SuppressThisWarning Veditor UNUSED
input en; // SuppressThisWarning Veditor UNUSED
input [1:0] pwr;
output [1:0] enc;
......@@ -229,8 +227,8 @@ module motor (clk,
real position, position0;
real speed, speed0;
// time t,t0;
integer itime;
real rtime;
///AF: integer itime;
///AF: real rtime;
reg [1:0] enc;
reg [1:0] enc_bin;
real t,t0, dt, e,f;
......@@ -249,10 +247,10 @@ module motor (clk,
t=$time;
dt=(t-t0)/1000000000; // in seconds
case (pwr)
0: f<=(speed>0)?-1.0:1.0;
1: f<=1.0;
2: f<=-1.0;
3: f<=0.0;
0: f = (speed>0)?-1.0:1.0;
1: f = 1.0;
2: f = -1.0;
3: f = 0.0;
endcase
e=f-speed/VMAX;
speed=speed0+ACCEL*VMAX*e*dt;
......@@ -261,7 +259,7 @@ module motor (clk,
#1;
// itime=sim_time;
// rtime=sim_time;
enc[1:0] <= {enc_bin[1],enc_bin[1] ^ enc_bin[0]};
enc[1:0] = {enc_bin[1],enc_bin[1] ^ enc_bin[0]};
t0=t;
speed0=speed;
position0=position;
......
......@@ -31,7 +31,11 @@ module MSRL16 (Q, A, CLK, D);
output Q;
input [3:0] A;
input CLK, D;
SRL16 i_q(.Q(Q), .A0(A[0]), .A1(A[1]), .A2(A[2]), .A3(A[3]), .CLK(CLK), .D(D));
`ifdef SIMULATION
SRL16_MOD #(.INVERT(1'b0)) i_q (.Q(Q), .A0(A[0]), .A1(A[1]), .A2(A[2]), .A3(A[3]), .CLK(CLK), .D(D));
`else
SRL16 i_q (.Q(Q), .A0(A[0]), .A1(A[1]), .A2(A[2]), .A3(A[3]), .CLK(CLK), .D(D));
`endif
endmodule
......@@ -39,7 +43,11 @@ module MSRL16_1 (Q, A, CLK, D);
output Q;
input [3:0] A;
input CLK, D;
SRL16_1 i_q(.Q(Q), .A0(A[0]), .A1(A[1]), .A2(A[2]), .A3(A[3]), .CLK(CLK), .D(D));
`ifdef SIMULATION
SRL16_MOD #(.INVERT(1'b1)) i_q (.Q(Q), .A0(A[0]), .A1(A[1]), .A2(A[2]), .A3(A[3]), .CLK(CLK), .D(D));
`else
SRL16_1 i_q (.Q(Q), .A0(A[0]), .A1(A[1]), .A2(A[2]), .A3(A[3]), .CLK(CLK), .D(D));
`endif
endmodule
module myRAM_WxD_D(D,WE,clk,AW,AR,QW,QR);
......@@ -73,3 +81,43 @@ parameter DATA_2DEPTH=(1<<DATA_DEPTH)-1;
assign QW= ram[AW];
assign QR= ram[AR];
endmodule
// Fixing Xilinx SLR16_x
module SRL16_MOD #(
parameter INIT = 16'h0000,
parameter INVERT = 0 // *_1 - invert
) (
output Q,
input A0,
input A1,
input A2,
input A3,
input CLK,
input D);
reg [15:0] data;
wire clk_;
wire [3:0] a = {A3, A2, A1, A0};
assign Q = (data == 16'h0) ? 1'b0 :
((data == 16'hffff) ? 1'b1 : data[a]);
assign clk_ = INVERT? (~CLK) : CLK;
initial
begin
assign data = INIT;
while (clk_ === 1'b1 || clk_ === 1'bX)
#10;
deassign data;
end
always @(posedge clk_)
begin
{data[15:0]} <= #100 {data[14:0], D};
end
endmodule
/*******************************************************************************
* Include file: imu_sim2_include.vh
* Date:2015-07-26
* Author: Andrey Filippov
* Description: Moved here all simulation for IMU logger
*
* Copyright (c) 2015 Elphel, Inc .
* imu_sim2_include.vh is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* imu_sim_include2.vh is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/> .
*******************************************************************************/
`ifdef TEST_IMU
cpu_wr(X313_WA_IOPINS, X313_WA_IOPINS_EN_IMU_OUT); // 'hc0000000;
/*
reg we_config_imu; // bits 1:0, 2 - enable slot[1:0]
reg we_config_gps; // bits 6:3, 7 - enable - {ext,inver, slot[1:0]} slot==0 - disable
reg we_config_msg; // bits 12:8,13 - enable - {invert,extinp[3:0]} extinp[3:0]=='hf' - disable
reg we_config_syn; // bit 14, 15 - enable - enable logging external timestamps
reg we_config_rst; // bit 16, 17 - enable - reset modules
*/
cpu_wr(X313_WA_IMU_CTRL, 3); // select config register
// cpu_wr(X313_WA_IMU_DATA, 'h3e695); // configure channels and reset // gps timestamp from 1sec input, positive
// cpu_wr(X313_WA_IMU_DATA, 'h3e6b5); // configure channels and reset // gps timestamp from 1sec input, negative
// cpu_wr(X313_WA_IMU_DATA, 'h3e6d5); // configure channels and reset // gps timestamp after pause
// cpu_wr(X313_WA_IMU_DATA, 'h3e6f5); // configure channels and reset // gps timestamp at "$" start
cpu_wr(X313_WA_IMU_DATA, 'h43e6f5); // configure channels and reset // gps timestamp at "$" start, reset configure_debug
cpu_wr(X313_WA_IMU_CTRL, 2); // select register number 2 (serial half-bit duration)
cpu_wr(X313_WA_IMU_DATA, 'h8007); // reset rs232 by 1 in MSB
cpu_wr(X313_WA_IMU_CTRL, 2); // select register number 2 (serial half-bit duration)
cpu_wr(X313_WA_IMU_DATA, 'h0007); // serial speed 8 cycles (period = 32 CLK0 cycles)
cpu_wr(X313_WA_IMU_CTRL, 3); // select config register
cpu_wr(X313_WA_IMU_DATA, 'h20000); // remove reset
// encode 4 sentences
/*
$GPRMC,042931.0,A,4043.39929,N,11155.92706,W,000.00,283.8,250411,013.2,E*45
$GPGGA,042931.0,4043.39929,N,11155.92706,W,1,09,0.8,1280.5,M,-13.8,M,,*5B
$GPGSA,A,3,04,07,08,11,15,17,24,26,27,,,,1.7,0.8,1.5*36
$GPVTG,283.8,T,270.5,M,000.00,N,0000.00,K*7F
*/
cpu_wr(X313_WA_IMU_CTRL, 'h20); // format write
// just ($GP)RMC, GGA, GSA and VTG
cpu_wr(X313_WA_IMU_DATA, 'h6); //
cpu_wr(X313_WA_IMU_DATA, 'hf); //
cpu_wr(X313_WA_IMU_DATA, 'he); //
cpu_wr(X313_WA_IMU_DATA, 'h0); //
cpu_wr(X313_WA_IMU_DATA, 'h9); //
cpu_wr(X313_WA_IMU_DATA, 'h7); //
cpu_wr(X313_WA_IMU_DATA, 'h6); //
cpu_wr(X313_WA_IMU_DATA, 'hb); //
cpu_wr(X313_WA_IMU_DATA, 'h1); //
cpu_wr(X313_WA_IMU_DATA, 'hc); //
cpu_wr(X313_WA_IMU_DATA, 'hf); //
cpu_wr(X313_WA_IMU_DATA, 'h9); //
cpu_wr(X313_WA_IMU_DATA, 'h8); //
cpu_wr(X313_WA_IMU_DATA, 'h0); //
cpu_wr(X313_WA_IMU_DATA, 'h0); //
cpu_wr(X313_WA_IMU_DATA, 'h0); //
/// cpu_wr(X313_WA_IMU_CTRL, 'h30); // first format
//$GPRMC,042931.0,A,4043.39929,N,11155.92706,W,000.00,283.8,250411,013.2,E*45
//0101010 000 : 'hb 'h2a 'h04 'h0
// cpu_wr(X313_WA_IMU_DATA, 'h0b); //number of fields including dummy comma
cpu_wr(X313_WA_IMU_DATA, 'h0a); // testing - made 1 shorter than actual
cpu_wr(X313_WA_IMU_DATA, 'h2a); //
cpu_wr(X313_WA_IMU_DATA, 'h04); //
cpu_wr(X313_WA_IMU_DATA, 'h00); //
/// cpu_wr(X313_WA_IMU_CTRL, 'h34); // second format
//$GPGGA,042931.0,4043.39929,N,11155.92706,W,1,09,0.8,1280.5,M,-13.8,M,,*5B
//0010 1000 0101 0 : 'h0e 'h14 'h0a 'h0
cpu_wr(X313_WA_IMU_DATA, 'h0e); //number of fields including dummy comma
cpu_wr(X313_WA_IMU_DATA, 'h14); //
cpu_wr(X313_WA_IMU_DATA, 'h0a); //
cpu_wr(X313_WA_IMU_DATA, 'h00); //
/// cpu_wr(X313_WA_IMU_CTRL, 'h38); // third format
//$GPGSA,A,3,04,07,08,11,15,17,24,26,27,,,,1.7,0.8,1.5*36
//01000000 00000000 00 : 'h11 'h01 'h00 'h0
cpu_wr(X313_WA_IMU_DATA, 'h11); //number of fields including dummy comma
cpu_wr(X313_WA_IMU_DATA, 'h01); //
cpu_wr(X313_WA_IMU_DATA, 'h00); //
cpu_wr(X313_WA_IMU_DATA, 'h00); //
/// cpu_wr(X313_WA_IMU_CTRL, 'h3c); // fourth format
//$GPVTG,283.8,T,270.5,M,000.00,N,0000.00,K*7F
//00101010 1 : 'h08 'haa 'h00 'h0
cpu_wr(X313_WA_IMU_DATA, 'h08); //number of fields including dummy comma
cpu_wr(X313_WA_IMU_DATA, 'haa); //
cpu_wr(X313_WA_IMU_DATA, 'h00); //
cpu_wr(X313_WA_IMU_DATA, 'h00); //
cpu_wr(X313_WA_IMU_CTRL, 4); // select register number 4
cpu_wr(X313_WA_IMU_DATA, 'h10); // x gyro low
cpu_wr(X313_WA_IMU_DATA, 'h12); // x gyro high
cpu_wr(X313_WA_IMU_DATA, 'h14); //
cpu_wr(X313_WA_IMU_DATA, 'h16); //
cpu_wr(X313_WA_IMU_DATA, 'h18); //
cpu_wr(X313_WA_IMU_DATA, 'h1a); //
cpu_wr(X313_WA_IMU_DATA, 'h1c); // x accel low
cpu_wr(X313_WA_IMU_DATA, 'h1e); //
cpu_wr(X313_WA_IMU_DATA, 'h20); //
cpu_wr(X313_WA_IMU_DATA, 'h22); //
cpu_wr(X313_WA_IMU_DATA, 'h24); //
cpu_wr(X313_WA_IMU_DATA, 'h26); // z accel high
cpu_wr(X313_WA_IMU_DATA, 'h40); // x delta ang low
cpu_wr(X313_WA_IMU_DATA, 'h42); // x delta ang high
cpu_wr(X313_WA_IMU_DATA, 'h44); //
cpu_wr(X313_WA_IMU_DATA, 'h46); //
cpu_wr(X313_WA_IMU_DATA, 'h48); //
cpu_wr(X313_WA_IMU_DATA, 'h4a); //
cpu_wr(X313_WA_IMU_DATA, 'h4c); // x delta vel low
cpu_wr(X313_WA_IMU_DATA, 'h4e); //
cpu_wr(X313_WA_IMU_DATA, 'h50); //
cpu_wr(X313_WA_IMU_DATA, 'h52); //
cpu_wr(X313_WA_IMU_DATA, 'h54); //
cpu_wr(X313_WA_IMU_DATA, 'h56); // z delta vel high
cpu_wr(X313_WA_IMU_DATA, 'h0e); // temperature
cpu_wr(X313_WA_IMU_DATA, 'h70); // time m/s
cpu_wr(X313_WA_IMU_DATA, 'h72); // time d/h
cpu_wr(X313_WA_IMU_DATA, 'h74); // time y/m
cpu_wr(X313_WA_IMU_CTRL, 0); // select period register
cpu_wr(X313_WA_IMU_DATA, 0); // reset IMU
cpu_wr(X313_WA_IMU_DATA, 0); // reset bit counter
#1000;
cpu_wr(X313_WA_IMU_CTRL, 1); // select period register
cpu_wr(X313_WA_IMU_DATA, IMU_BIT_DURATION); // set bit counter (clock frequency divider)
cpu_wr(X313_WA_IMU_CTRL, 0); // select period register
cpu_wr(X313_WA_IMU_DATA, IMU_PERIOD); // set period
// set "odometer" message
cpu_wr(X313_WA_IMU_CTRL, 'h40); // select start of message
cpu_wr(X313_WA_IMU_DATA, 'h01234567); // Message first 4 bytes
cpu_wr(X313_WA_IMU_DATA, 'h12345678); //next
cpu_wr(X313_WA_IMU_DATA, 'h23456789); //next
cpu_wr(X313_WA_IMU_DATA, 'h3456789a); //next
cpu_wr(X313_WA_IMU_DATA, 'h456789ab); //next
cpu_wr(X313_WA_IMU_DATA, 'h56789abc); //next
cpu_wr(X313_WA_IMU_DATA, 'h6789abcd); //next
cpu_wr(X313_WA_IMU_DATA, 'h789abcde); //next
cpu_wr(X313_WA_IMU_DATA, 'h89abcdef); //next
cpu_wr(X313_WA_IMU_DATA, 'h9abcdef0); //next
cpu_wr(X313_WA_IMU_DATA, 'habcdef01); //next
cpu_wr(X313_WA_IMU_DATA, 'hbcdef012); //next
cpu_wr(X313_WA_IMU_DATA, 'hcdef0123); //next
cpu_wr(X313_WA_IMU_DATA, 'hdef01234); //next
// extra 8 bytes - will not be logged
cpu_wr(X313_WA_IMU_DATA, 'hef012345); //next
cpu_wr(X313_WA_IMU_DATA, 'hf0123456); //next
// cpu_wr(1,32'h00000); // disable and reset dma
// cpu_wr(1,32'h20000); // enable DMA channel 1
cpu_wr(1,32'h00024); // disable and reset dma (both channels)
cpu_wr(1,32'h00028); // enable DMA channel 1
// cpu_wr(X313_WA_IMU_DATA, 1); // set period
/*
parameter X313_WA_IMU_DATA= 'h7e;
parameter X313_WA_IMU_CTRL= 'h7f;
parameter X313_RA_IMU_DATA= 'h7e; // read fifo word, advance pointer (32 reads w/o ready check)
parameter X313_RA_IMU_STATUS= 'h7f; // LSB==ready
*/
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
`endif
\ No newline at end of file
/*******************************************************************************
* Include file: imu_sim_include.vh
* Date:2015-07-26
* Author: Andrey Filippov
* Description: Moved here all simulation for IMU logger
*
* Copyright (c) 2015 Elphel, Inc .
* imu_sim_include.vh is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* imu_sim_include.vh is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/> .
*******************************************************************************/
#250000;
dma_en(0,1);
`ifdef TEST_IMU
cpu_wr(X313_WA_IMU_CTRL, 3); // select config register
cpu_wr(X313_WA_IMU_DATA, 'h4c0000); // set debug_config to 4'h3
cpu_wr(X313_WA_IMU_CTRL, 1); // select period register
cpu_wr(X313_WA_IMU_DATA, IMU_BIT_DURATION | 16'h1000); // set bit counter and stall of 16 sclk half-periods
wait (IMU_CS); // wait IMU inactive
IMU_103695REVA = 1'b1; // switch to revision "A"
cpu_wr(X313_WA_IMU_CTRL, 3); // select config register
cpu_wr(X313_WA_IMU_DATA, 'h5c0000); // set debug_config to 4'h7
cpu_wr(X313_WA_IMU_CTRL, 0); // select period register
cpu_wr(X313_WA_IMU_DATA, IMU_AUTO_PERIOD); // set period defined by IMU
`endif
#480000;
//#480000;
$finish;
`ifdef TEST_IMU
cpu_rd(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
`endif
$finish;
//#250000;
// dma_en(0,1);
//#480000;
`ifdef TEST_IMU
dma_en(0,1);
cpu_wr(X313_WA_IMU_CTRL, 3); // select config register
cpu_wr(X313_WA_IMU_DATA, 'h4c0000); // set debug_config to 4'h3
cpu_wr(X313_WA_IMU_CTRL, 1); // select period register
cpu_wr(X313_WA_IMU_DATA, IMU_BIT_DURATION | 16'h1000); // set bit counter and stall of 16 sclk half-periods
wait (IMU_CS); // wait IMU inactive
IMU_103695REVA = 1'b1; // switch to revision "A"
cpu_wr(X313_WA_IMU_CTRL, 3); // select config register
cpu_wr(X313_WA_IMU_DATA, 'h5c0000); // set debug_config to 4'h7
cpu_wr(X313_WA_IMU_CTRL, 0); // select period register
cpu_wr(X313_WA_IMU_DATA, IMU_AUTO_PERIOD); // set period defined by IMU
`endif
#480000;
$finish;
`ifdef TEST_IMU
cpu_rd(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
`endif
$finish;
//#250000;
// dma_en(0,1);
//#480000;
#200000;
$finish;
\ No newline at end of file
/*******************************************************************************
* Include file: imu_sim_init_include.vh
* Date:2015-07-26
* Author: Andrey Filippov
* Description: Moved here all simulation for IMU logger
*
* Copyright (c) 2015 Elphel, Inc .
* imu_sim_init_include.vh is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* imu_sim_init_include.vh is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/> .
*******************************************************************************/
`ifdef TEST_IMU
//wire [11:0] EXT; // bidirectional
wire IMU_SCL=EXT[0];
wire IMU_SDA=EXT[1];
wire IMU_MOSI=EXT[2];
wire IMU_MISO=EXT[3]; //SuppressThisWarning Veditor UNUSED
reg IMU_EN;
wire IMU_ACTIVE;
wire IMU_NMOSI=!IMU_MOSI;
wire [5:1] IMU_TAPS;
reg IMU_LATE_ACKN;
reg IMU_SCLK;
reg IMU_MOSI_REVA;
reg IMU_103695REVA;
wire IMU_MOSI_OUT;
wire IMU_SCLK_OUT;
assign IMU_MOSI_OUT=IMU_103695REVA?IMU_MOSI_REVA:IMU_MOSI;
assign IMU_SCLK_OUT=IMU_103695REVA?(IMU_SCLK):IMU_SCL;
always @ (posedge IMU_SDA) begin
IMU_EN<=IMU_MOSI;
end
wire IMU_CS=IMU_103695REVA?!IMU_ACTIVE:!(IMU_EN &&IMU_SDA);
reg IMU_MOSI_D;
always @ (posedge IMU_SCLK_OUT) begin
// IMU_MOSI_D<=IMU_MOSI;
IMU_MOSI_D<=IMU_MOSI_OUT;
end
reg [15:0] IMU_LOOPBACK;
always @ (negedge IMU_SCLK_OUT) begin
if (!IMU_CS) IMU_LOOPBACK[15:0]<={IMU_LOOPBACK[14:0],IMU_MOSI_D};
end
assign EXT[3]=IMU_CS?IMU_DATA_READY:IMU_LOOPBACK[15];
PULLUP i_IMU_SDA (.O(IMU_SDA));
PULLUP i_IMU_SCL (.O(IMU_SCL));
initial begin
SERIAL_DATA_FD=$fopen("gps_data.dat","r");
end
always begin
#(IMU_READY_PERIOD-IMU_NREADY_DURATION) IMU_DATA_READY=1'b0;
#(IMU_NREADY_DURATION) IMU_DATA_READY=1'b1;
end
assign EXT[4]=SERIAL_BIT;
assign EXT[5]=GPS1SEC;
assign EXT[6]=ODOMETER_PULSE;
oneshot i_oneshot (.trigger(IMU_NMOSI),
.out(IMU_ACTIVE));
dly5taps i_dly5taps (.dly_in(IMU_NMOSI),
.dly_out(IMU_TAPS[5:1]));
always @ (negedge IMU_ACTIVE or posedge IMU_TAPS[5]) if (!IMU_ACTIVE) IMU_LATE_ACKN<= 1'b0; else IMU_LATE_ACKN<= 1'b1;
always @ (negedge IMU_LATE_ACKN or posedge IMU_TAPS[4]) if (!IMU_LATE_ACKN) IMU_SCLK<= 1'b1; else IMU_SCLK<= ~IMU_SCLK;
always @ (negedge IMU_SCLK) IMU_MOSI_REVA<= IMU_NMOSI;
`endif
\ No newline at end of file
/*******************************************************************************
* Include file: imu_sim_tasks_include.vh
* Date:2015-07-26
* Author: Andrey Filippov
* Description: Moved here all simulation tasks for IMU logger
*
* Copyright (c) 2015 Elphel, Inc .
* imu_sim_tasks_include.vh is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* imu_sim_tasks_include.vh is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/> .
*******************************************************************************/
`ifdef TEST_IMU
task send_serial_bit;
input [7:0] data_byte;
reg [7:0] d;
begin
d <= data_byte;
wait (CLK0); wait (~CLK0);
// SERIAL_BIT should be 1 here
// Send start bit
SERIAL_BIT <= 1'b0;
repeat (IMU_GPS_BIT_PERIOD) begin wait (CLK0); wait (~CLK0); end
// Send 8 data bits, LSB first
repeat (8) begin
SERIAL_BIT <= d[0];
#1 d[7:0] <= {1'b0,d[7:1]};
repeat (IMU_GPS_BIT_PERIOD) begin wait (CLK0); wait (~CLK0); end
end
// Send stop bit
SERIAL_BIT <= 1'b1;
repeat (IMU_GPS_BIT_PERIOD) begin wait (CLK0); wait (~CLK0); end
end
endtask
task send_serial_pause;
begin
wait (CLK0); wait (~CLK0);
SERIAL_BIT <= 1'b1;
repeat (16) begin
repeat (IMU_GPS_BIT_PERIOD) begin wait (CLK0); wait (~CLK0); end
end
end
endtask
// SERIAL_DATA_FD=$fopen("gps_data.dat","r");
task send_serial_line;
integer char;
begin
char=0;
while (!$feof (SERIAL_DATA_FD) && (char != 'h0a)) begin
char=$fgetc(SERIAL_DATA_FD);
send_serial_bit(char);
end
end
endtask
`endif
\ No newline at end of file
......@@ -455,11 +455,13 @@ myRAM_WxD_D #( .DATA_WIDTH(22),.DATA_DEPTH(2))
wire [4:0] padlen;
assign padlen=((mode && (descr_stat[8:4]==5'h1f))?(descr_stat[13:9]+1'b1):descr_stat[13:9])+1;
reg [15:0] linAddr;
/// AF2015: was reg [15:0] linAddr;
reg [16:0] linAddr;
// wire [15:0] linAddr; //replacing with latches to ease timing
wire [15:0] linAddr_input;
///AAF2015: wire [15:0] linAddr_input;
wire [18:0] linAddr_input; // to match multipler result, 2 MSBs are still discarded
wire [4:0] descr_stat_inc=descr_stat[8:4]+1;
assign linAddr_input[15:0] = padlen[4:0]*{descr_dyn[19:10],mode?4'b0:descr_dyn[9:6]};
assign linAddr_input = padlen[4:0]*{descr_dyn[19:10],mode?4'b0:descr_dyn[9:6]};
always @ (negedge clk) if (stepsEn[1]) begin // address should be 1
......@@ -469,7 +471,8 @@ myRAM_WxD_D #( .DATA_WIDTH(22),.DATA_DEPTH(2))
seq_par[5:0] <= mode?({1'b0,descr_stat[13:9]}+((descr_stat[8:4]==5'h1f)?2'h2:2'h1)): //fixed bug with pages where number of hor. tiles is multiple of 0x10
({1'b0,(descr_dyn[4:0]==descr_stat[13:9])?(descr_stat_inc):5'b0});
sa[7:3] <= mode?descr_dyn[4:0]:5'b0;
linAddr[15:0] <= linAddr_input[15:0];
///AAF2015: linAddr <= linAddr_input[12:0];
linAddr <= linAddr_input[16:0];
nxtTL <= nxtTLw;
tileX[ 9:0] <= nxtTLw? 10'b0 : (descr_dyn[9:0]+1); // bits [9:5] are garbage if (mode==0)
......@@ -526,7 +529,8 @@ myRAM_WxD_D #( .DATA_WIDTH(22),.DATA_DEPTH(2))
{descr_stat[3:0],8'b0,mode?
descr_dyn[9:5]:
descr_dyn[4:0]}:
{linAddr[15:0]}));
/// AF2015: was {linAddr[16:0]}));
{linAddr[16:0]}));
end
//photofinish hack
always @ (negedge clk) if (stepsEn[1]) begin
......
......@@ -359,13 +359,13 @@ module mcontr(
bufCntr256 i_bufCntr0 (.clk(clk0), .rst(!enSDRAM), .cs(curChanLate[0]), .init(ch_prefirstdrun), .bank(nBuf[1:0]),
.drun_rd(1'b0), .drun_wr(ch_drun_wr), .dlast(ch_dlast),
.a(bmad0[8:0]), .en(ch0en), .done(dnch[0]));
.a(bmad0[8:0]), .en(ch0en), .done(dnch[0]),.we());
bufCntr256 i_bufCntr1 (.clk(clk0), .rst(!enSDRAM), .cs(curChanLate[1]), .init(ch_prefirstdrun), .bank(nBuf[1:0]),
.drun_rd(ch_drun_rd), .drun_wr(1'b0), .dlast(ch_dlast),
.a(bmad1[8:0]), .we(ch1we), .done(dnch[1]));
.a(bmad1[8:0]), .we(ch1we), .done(dnch[1]), .en());
bufCntr256 i_bufCntr2 (.clk(clk0), .rst(!enSDRAM), .cs(curChanLate[2]), .init(ch_prefirstdrun), .bank(nBuf[1:0]),
.drun_rd(ch_drun_rd), .drun_wr(1'b0), .dlast(ch_dlast),
.a(bmad2[8:0]), .we(ch2we), .done(dnch[2]));
.a(bmad2[8:0]), .we(ch2we), .done(dnch[2]), .en());
bufCntr256 i_bufCntr3 (.clk(clk0), .rst(!enSDRAM), .cs(curChanLate[3]), .init(ch_prefirstdrun), .bank(nBuf[1:0]),
.drun_rd(ch_drun_rd), .drun_wr(ch_drun_wr), .dlast(ch_dlast),
.a(bmad3[8:0]), .en (ch3en), .we(ch3owe), .done(dnch[3])
......@@ -451,7 +451,9 @@ end
.done(dnch[0]), // data transfer over
.rq(chnReq[0]), // request (level, sync to iclk)
.rqInit(chnReqInit[0]), // request to Init channel (level, sync to iclk)
.rdy(ch0rdy)); // external ready output
.rdy(ch0rdy), // external ready output
.rdy_async(), // output
.wrempty()); // output
channelRequest i_channelRequest1 (.rst(!enSDRAM), // probably for simulation only...
.init(chReqInit[1]), // 1 cycle long, sync to iclk
......@@ -464,7 +466,10 @@ end
.done(dnch[1]), // data transfer over
.rq(chnReq[1]), // request (level, sync to iclk)
.rqInit(chnReqInit[1]), // request to Init channel (level, sync to iclk)
.rdy(ch1rdy)); // external ready output
.rdy(ch1rdy), // external ready output
.rdy_async(), // output
.wrempty()); // output
channelRequest i_channelRequest2 (.rst(!enSDRAM), // probably for simulation only...
.init(chReqInit[2]), // 1 cycle long, sync to iclk
......@@ -477,7 +482,9 @@ end
.done(dnch[2]), // data transfer over
.rq(chnReq[2]), // request (level, sync to iclk)
.rqInit(chnReqInit[2]), // request to Init channel (level, sync to iclk)
.rdy(ch2rdy)); // external ready output
.rdy(ch2rdy), // external ready output
.rdy_async(), // output
.wrempty()); // output
channelRequest_1 i_channelRequest3 (.rst(!enSDRAM), // probably for simulation only...
.init(chReqInit[3]), // 1 cycle long, sync to iclk. For now - do nothing in dcc mode
......@@ -680,7 +687,7 @@ module channelRequest (rst, // only for simulation?
assign ready_off= !cntrsValid || (ecnt[2:0] == rcnt[2:0]);
always @ (posedge eclk or posedge rst)
if (rst) ecnt <= 2'b0;
if (rst) ecnt <= 3'b0;
else if (start) ecnt[2:0] <= next_ecnt;
// reduce latency of rdy - valid next cycle after start
......@@ -768,7 +775,7 @@ module channelRequest_1 (rst, // only for simulation?
assign ready_off= !cntrsValid || (ecnt[2:0] == rcnt[2:0]);
always @ (negedge eclk or posedge rst)
if (rst) ecnt <= 2'b0;
if (rst) ecnt <= 3'b0;
else if (start) ecnt[2:0] <= next_ecnt;
// reduce latency of rdy - valid next cycle after start
......
......@@ -185,9 +185,9 @@ module sdseq (clk0, // global clock 75-100MHz (hope to get to 120MHz with Sparta
prenext_wr <= drun_wr && pre_next_old;
next <= prenext_refr || prenext_wr || (!drun_wr && pre_next_old); // add m0 and refr here too
decLeft <= (prenext_m1s || prenext_m1d || prenext_m0); // add m0 and refr here too
if (first) left[4:0] <= (mode)? 5'h14:((param[4:0]==5'b0)?5'h1f:param[4:0]);
else if (decLeft) left[4:0] <= left[4:0] -1;
if (first) left[4:0] <= (mode)? 5'h14:((param[4:0]==5'b0)?5'h1f:param[4:0]);
///AF2015 - revert: if (first || rst) left[4:0] <= (mode)? 5'h14:((param[4:0]==5'b0)?5'h1f:param[4:0]);
else if (decLeft) left[4:0] <= left[4:0] -1;
end
......
......@@ -87,7 +87,7 @@ module lens_flat (sclk, /// system clock @negedge
reg [20:0] BY; /// By
reg [18:0] C; /// C
reg [16:0] scales[0:3]; // per-color coefficients
reg [16:0] scales_r;
///AF: reg [16:0] scales_r;
reg [15:0] fatzero_in; /// zero level to subtract before multiplication
reg [15:0] fatzero_out; /// zero level to add after multiplication
reg [ 3:0] post_scale; /// shift product after first multiplier - maybe needed when using decimation
......@@ -95,7 +95,7 @@ module lens_flat (sclk, /// system clock @negedge
wire [18:0] FY; /// F(0,y)
wire [23:0] ERR_Y; /// running error for the first column
wire [18:0] FXY; /// F(x,y)
reg [18:0] FXY_sat;
///AF: reg [18:0] FXY_sat;
reg [ 4:0] lens_corr_out; /// lens correction out valid (first clock from column0 )
/// copied form sensorpix353.v
reg bayer_nset;
......@@ -158,7 +158,7 @@ module lens_flat (sclk, /// system clock @negedge
3'h7:mult_first_scaled[17:0]<= (~mult_first_res[35] & |mult_first_res[34:26]) ? 18'h1ffff:mult_first_res[26: 9];
endcase
if (lens_corr_out[4]) pixdo[15:0]=pre_pixdo_with_zero[20]? 16'h0: /// negative - use 0
if (lens_corr_out[4]) pixdo[15:0] <= pre_pixdo_with_zero[20]? 16'h0: /// negative - use 0
((|pre_pixdo_with_zero[19:16])?16'hffff: ///>0xffff - limit by 0xffff
pre_pixdo_with_zero[15:0]);
end
......@@ -324,6 +324,7 @@ module lens_flat_line(
if (first_d) F[F_WIDTH-1:0] <= F1[ F_WIDTH-1:0];
else if (next_d) F[F_WIDTH-1:0] <= F[F_WIDTH-1:0]+{{(F_WIDTH-(DF_WIDTH)){dF[(DF_WIDTH)-1]}},dF[(DF_WIDTH)-1:0]};
if (first_d) A2X[F_SHIFT+1:1] <= {{F_SHIFT+2-A_WIDTH{A[A_WIDTH-1]}},A[A_WIDTH-1:0]};
else if (next) A2X[F_SHIFT+1:1] <= A2X[F_SHIFT+1:1] + {{F_SHIFT+2-A_WIDTH{A[A_WIDTH-1]}},A[A_WIDTH-1:0]};
end
......
......@@ -17,8 +17,8 @@ input MCLK, // Master clock
ARO, // Array read Out.
ARST, // Array Reset. Active low
OE, // output enable active low
SCL; // I2C clock
inout SDA; // I2C data
SCL; // I2C clock // SuppressThisWarning Veditor: Not yet implemented
inout SDA; // I2C data // SuppressThisWarning Veditor: Not yet implemented
input OFST; // I2C address ofset by 2: for simulation 0 - still mode, 1 - video mode.
output [11:0] D; // data output
......@@ -33,7 +33,7 @@ parameter ncols = 66; //58; //56; // 129; //128; //1288;
parameter nrows = 18; // 16; // 1032;
parameter nrowb = 1; // number of "blank rows" from vact to 1-st hact
parameter nrowa = 1; // number of "blank rows" from last hact to end of vact
parameter nAV = 24; //240; // clocks from ARO to VACT (actually from en_dclkd)
parameter nAV = 24; //240; // clocks from ARO to VACT (actually from en_dclkd) // SuppressThisWarning Veditor UNUSED
parameter nbpf = 20; //16; // bpf length
parameter ngp1 = 8; // bpf to hact
parameter nVLO = 1; // VACT=0 in video mode (clocks)
......@@ -64,7 +64,7 @@ parameter t_HACT= ncols; // 1288
parameter t_afterHACT=lline-nbpf-ngp1-ncols; // 352
parameter t_lastline= nrowa*lline+1; // 1664
reg [15:0] sensor_data[0:4095]; // up to 64 x 64 pixels
reg [15:0] sensor_data[0:4095]; // up to 64 x 64 pixels // SuppressThisWarning Veditor VDT_BUG - assigned in system task
// $readmemh("sensor.dat",sensor_data);
......
......@@ -86,7 +86,7 @@ module sensorpads (/// interface to DCM
output pclk2x;
input vact;
input hact; //output in fillfactory mode
inout bpf; // output in fillfactory mode
inout bpf; // output in fillfactory mode // SuppressThisWarning Veditor - not used as output
inout [11:0] pxd; //actually only 2 LSBs are inouts
inout mrst;
output arst;
......
......@@ -30,6 +30,7 @@
`define debug_dma_count
`define debug_compressor
`define debug_mcontr_reset
// `define DEBUG_IMU
module x353(PXD,DCLK,BPF,VACT,HACT,MRST,ARO,ARST,SCL0,SDA0,CNVSYNC,CNVCLK, SENSPGM,
DUMMYVFEF, ALWAYS0,
EXT,
......@@ -237,8 +238,8 @@ wire [31:0] debug_mcontr_reset_data;
wire ARST;
wire CNVSYNC;
wire CNVCLK;
wire XRST;
wire AUXCLK;
///AF: wire XRST;
///AF: wire AUXCLK;
wire SDCLK;
wire DREQ0,DREQ1;
wire IRQ;
......@@ -248,9 +249,9 @@ wire [31:0] debug_mcontr_reset_data;
// internal wires
wire iclk3;
wire dccout; // enable output of DC and HF components - not used anymore
wire dcc_enabled;
wire dcc_rdy=0; // Ready to read 128 DC coefficients in dcc mode. Actually they will be availabla a little later after being copied to
wire dccout; // enable output of DC and HF components - not used anymore //SuppressThisWarning Veditor UNUSED
wire dcc_enabled; //SuppressThisWarning Veditor UNUSED
wire dcc_rdy=0; // Ready to read 128 DC coefficients in dcc mode. Actually they will be availabla a little later after being copied to
// 8x32 output buffer
......@@ -264,13 +265,13 @@ wire iclk3;
wire [31:0] iod; // 32-bit data to be sent to CPU
wire [31:0] idi; // 32-bit data from CPU
wire [31:0] dcr; // 32-bit control register
///AF: wire [31:0] dcr; // 32-bit control register
wire [ 7:0] as; // internal address bus - sync to sclk0
wire [ 7:0] am; // internal address bus - multiplexed between input (for reads) and sycnc (for writes) - should not read too soon after write
wire [ 7:0] ia; // internal address bus - before latches
wire sclk0; // 120MHz (same as CLK0) - SDRAM/compressor controller global clock
wire sclk180; // 120MHz (same as CLK0) - phase shifted 180 degrees (maybe not needed)
wire sclk180; // 120MHz (same as CLK0) - phase shifted 180 degrees (maybe not needed) //SuppressThisWarning Veditor UNUSED
wire sclk270; // 120MHz (same as CLK0) - phase shifted 270 degrees
wire pclk; // sensor pixel clock
wire xclk; // 60MHz (=CLK0/2) - JPEG compressor clock (input stages)
......@@ -286,7 +287,7 @@ wire iclk3;
// allow one per trigger in triggered mode. Minimal period set to 129 pixel clocks
wire [15:0] ipxd;
wire sens_we;
wire [15:0] sens_wdl;
///AF: wire [15:0] sens_wdl;
wire sens_wpage;
wire [ 9:0] fpn_a;
wire [15:0] fpn_d;
......@@ -338,7 +339,7 @@ wire iclk3;
wire idreq1;
wire idack1;
wire da_ctl_24l, da_ctl_8h; // WE to control 32-bit register (1 loc) *********** obsolete **************
wire da_ctl_24l, da_ctl_8h; // WE to control 32-bit register (1 loc) *********** obsolete ************** //SuppressThisWarning Veditor UNUSED
wire da_dmamode; // select writing to dma_cntr/dma_raw (1 loc)
wire da_sensormode; // select writing to sensorpix (1 loc)
wire da_virttrig; // write virtual trigger threshold
......@@ -404,7 +405,7 @@ wire iclk3;
wire [ 9:0] sens_a; // [7:0] channel 0 address (MSB - block #)
wire [15:0] sens_d; // [15:0] channel 0 data in
wire trigger_single_pclk; // start of trigger
wire trigger_single_pclk; // start of trigger //SuppressThisWarning Veditor UNUSED
wire [31:0] bdo; // 32-bit data from SDRAM channel3
wire [31:0] dsdo; // 32-bit data from SDRAM descriptor memory
......@@ -413,7 +414,9 @@ wire iclk3;
wire [31:0] hist_do; // histogram data out, actully only [17:0];
wire sr_sda0, sr_scl0, sr_sda1, sr_scl1,sr_memrdy,sr_ch0rdy,sr_ch1rdy,sr_ch2rdy,sr_wrempty;
wire sr_sda0, sr_scl0;
///AF: wire sr_sda1, sr_scl1;
wire sr_memrdy,sr_ch0rdy,sr_ch1rdy,sr_ch2rdy,sr_wrempty;
wire [3:0] sr_nextFrame; //[3:0]
wire [3:0] chInitOnehot; // decoded channel init pulses, 2 cycles behind chInit
......@@ -431,9 +434,11 @@ wire iclk3;
// does not inclusde flushing
wire compressor_done_pulse; // does not need to be reset, single cycle (sclk)
wire dma_empty,dma_empty0,dma_empty1; // dma output buffer empty and dma is enabled (pessimistic - with delay)
wire dma_empty; // dma output buffer empty and dma is enabled (pessimistic - with delay)
///AF: wire dma_empty0,dma_empty1; // dma output buffer empty and dma is enabled (pessimistic - with delay)
wire virt_trig, virt_sel;
wire virt_trig;
wire virt_sel; //SuppressThisWarning Veditor UNUSED
wire ch2_en_rd_buff;
......@@ -457,10 +462,10 @@ wire iclk3;
wire twr_gamma; // write enable to "gamma" table (@negedge clk - addr and data valid this cycle and one before)
wire twr_focus; // write enable to "focus" table (coefficients to multiply DCT results before accumulating squares)
wire statistics_dv; // image statistics word valid (sync to clk)
wire [15:0] statistics_do; // 16-bit image statistics data to write
wire statistics_dv; // image statistics word valid (sync to clk) //SuppressThisWarning Veditor UNUSED
wire [15:0] statistics_do; // 16-bit image statistics data to write //SuppressThisWarning Veditor UNUSED
wire line_run;
wire frame_run;
wire frame_run; // SuppressThisWarning Veditor UNUSED
// synthesis attribute keep of rd_regs is true;
......@@ -468,12 +473,12 @@ wire iclk3;
wire stuffer_dv;
wire [3:0] test_dma_rcntr;
wire [3:0] test_dma_wcntr;
wire [3:0] test_fifo;
///AF: wire [3:0] test_dma_rcntr;
wire [3:0] test_dma_wcntr; // SuppressThisWarning Veditor UNUSED
wire [3:0] test_fifo; // SuppressThisWarning Veditor UNUSED
wire [3:0] test_dma1_rcntr;
wire [7:0] test_dma1_wcntr;
///AF: wire [3:0] test_dma1_rcntr;
wire [7:0] test_dma1_wcntr; // SuppressThisWarning Veditor UNUSED
wire [7:0] test_fifo1;
......@@ -520,37 +525,38 @@ wire [7:0] dcm_status;
wire sens_dcm_locked;
wire sens_dcm_done;
wire [7:0] sens_dcm_status;
wire [1:0] sens_ph_err;
wire [1:0] sens_ph_err = 0; // currently not assigned (removed module)
wire ioe;// internal (not global) version of OE (for DMA)
wire [1:0] phsel; // additional phase select for SDRAM clock
wire pclk2x; // twice frequency of the pclk, global
wire [1:0] sensordat_pherr; // sync to posedge pclk, PXD[2] differs with 1/4 early, 1/4 late
wire [1:0] sensordat_pherr; // sync to posedge pclk, PXD[2] differs with 1/4 early, 1/4 late //SuppressThisWarning Veditor UNUSED
wire sensor_trigger; // signal to start CMOS sensor in sync mode
wire confirmFrame2Compressor; // pulse to start reading a new frame to buffer for compressor (generated at start of each frame by the compressor)
// mcontr will stop to read to channel FIFO at the end of frame, wait for confirmation
`ifdef debug_compressor
wire [31:0] printk_compressor;
wire [31:0] printk_compressor; //SuppressThisWarning Veditor UNUSED
`endif
//ia
`ifdef debug_stuffer
wire [7:0] testwire;
//wire [31:0] printk;
wire [3:0] tst_stuf_etrax;
reg [3:0] tst_cmd_cntr;
reg tst_rdy_after_eot;
// ,.test1( test_fifo[3:0])
// ,.test2( test_dma_wcntr[3:0])
wire dma0_enabled; // just for debug
wire dma1_enabled; // just for debug
///AF: wire dma0_enabled; // just for debug
///AF: wire dma1_enabled; // just for debug
`endif
`ifdef debug_dma_count
wire [31:0] printk;
`endif
// Needed anyway:
wire dma0_enabled; // just for debug
wire dma1_enabled; // just for debug
/*
//xfer_over_irq
reg [3:0] test_11;
......@@ -562,10 +568,24 @@ wire [3:0] nextBlocksEn; // When combined with SDRAM data ready, may be used
wire [3:0] restart; // reinitialize mcontr channels (normally after frame sync, if enabled)
// debug IMU
wire imu_enabled_mclk;
wire imu_run_mclk;
wire [31:0] imu_period;
// Wires missing in the original 353 design
wire sdwe_p; // WE command bit to SDRAM (1 cycle ahead)
wire sdras_p; // CAS command bit to SDRAM (1 cycle ahead)
wire sdcas_p; // CAS command bit to SDRAM
wire sd_dqsrd; // enable read from DQS i/o-s for phase adjustments (latency 2 from the SDRAM RD command)
wire trig_irq; // single-cycle (pclk) pulse at external interrupt
wire da_init_ch3; // write to init cnhannel 3 (will reset address r/w)
wire da_next_ch3; // advance to the next channel3 page, reset address
wire stch2; // start channel 2 transfer
`ifdef DEBUG_IMU// debug IMU
wire imu_enabled_mclk;
wire imu_run_mclk;
wire [31:0] imu_period;
`endif
......@@ -699,7 +719,6 @@ wire [31:0] imu_period;
// temporary change behaviour of dqs2 to fix pinout problem - will influence adjustment goal
dqs2 i_sddqs(.c0(sclk0),/*.c90(sclk90),*/.c270(sclk270),
// dqs2 i_sddqs(.c0(sclk0),.c0comb(sclk270),.c90(sclk90),.c270(sclk270),
.t (sddqt), // 1/2 cycle before cmd "write" sent out to the SDRAM, sync to sclk180
.UDQS (UDQS), // UDQS I/O pin
.LDQS (LDQS), // LDQS I/O pin
......@@ -707,7 +726,6 @@ wire [31:0] imu_period;
.ldqsr90 (ldqsr90), // data from SDRAM interface pin LDQS strobed at rising sclk90
.udqsr270(udqsr270), // data from SDRAM interface pin UDQS strobed at rising sclk270
.ldqsr270(ldqsr270) // data from SDRAM interface pin UDQS strobed at rising sclk270
// ,.qtmp(qtmp[3:0]) // temporary
);
......@@ -973,43 +991,15 @@ BUFGMUX i_pclk (.O(pclk), .I0(pclki), .I1(sens_clk), .S(|cb_pclksrc[1:0]));
//cb_pxd14
assign ihact=iihact;
/*
sensor_phase i_sensor_phase(.pre_wcmd(da_dcm), // decoded address - enables wclk
.wd(idi[7:4]), // CPU write data [3:0]
// 0 - nop, just reset status data
// 1 - increase phase shift
// 2 - decrease phase shift
// 3 - reset phase shift to default (preprogrammed in FPGA configuration)
// c - reset phase90
// 4 - incr pahse90
// 8 - decrease phase90
//
.sensordat_pherr(sensordat_pherr[1:0]), // phase error detected on PXD[2] (should be different)
.ph_err(sens_ph_err[1:0]), // [1:0] 0 - no data since last change (wclk*wcmd)
// 1 - clock is too late
// 2 - clock is too early
// 3 - OK (some measurements show too late, some - too early)
.sclk0(sclk0), // global clock, (negedge - commands)
.pclk(pclk), // global pixel clock (posedge) - from CLK1
.pixclko(idclk), // pixel clock out (phase shifted from global pclk
.dcm_done( sens_dcm_done),
.locked(sens_dcm_locked), // dcm locked
.status(sens_dcm_status[7:0]), // dcm status (bit 1 - dcm clkin stopped)
.pclk2x(pclk2x) // pclk multiplied by 2
);
*/
//da_sensortrig_lines
reg [9:0] ch0_blocks_in_line;
reg mode16bits;
reg [13:3] pre_hact_length;
///AF: reg [9:0] ch0_blocks_in_line;
///AF: reg mode16bits;
///AF: reg [13:3] pre_hact_length;
reg [13:0] hact_length;
always @(negedge sclk0) if (da_sensortrig_lines && (idi[15:14]==2'h1)) begin
hact_length[13:0] <= idi[13:0];
end
// .en_vacts(!cb_sensor_trigger || sensor_trigger ), // disable processing second vact after the trigger in triggered mode
reg en_vacts_free=1'b1; // register to allow only one vacts after trigger in triggered mode. Allows first vacts after mode is set
always @ (posedge pclk) begin
if (!cb_sensor_trigger) en_vacts_free<= 1'b1;
......@@ -1428,7 +1418,8 @@ cmd_sequencer i_cmd_sequencer
.seq_a(sequencer_a[7:0]), // address from the sequencer
.seq_d(sequencer_d[23:0]), // data from the sequencer
.frame_no(sequencer_frame_no[2:0])); // [2:0] current frame modulo 8
wire [7:4] test_fifo_dummy; //SuppressThisWarning Veditor UNUSED
wire [7:4] test_dma_wcntr_dummy; //SuppressThisWarning Veditor UNUSED
dma_fifo_sync i_dma_fifo0 ( .clk(sclk0), // system clock, 120MHz? (currentle negedge used)
.pre_wen(da_dmamode), // decoded addresses (valid @ negedge clk)
// .wd({idi[3],idi[1]}), // only 2 bits are used - {pio_mode,dma_enable} 1 cycle delay
......@@ -1443,8 +1434,8 @@ cmd_sequencer i_cmd_sequencer
.di({stuffer_do[7:0],stuffer_do[15:8]}), // 16-bit data to write
.enabled(dma0_enabled),
.real_empty(dma_empty)
,.test1( test_fifo[3:0])
,.test2( test_dma_wcntr[3:0])
,.test1( {test_fifo_dummy[7:4], test_fifo[3:0]})
,.test2( {test_dma_wcntr_dummy[7:4], test_dma_wcntr[3:0]})
); // pessimistic, with several clk delay
/*
......@@ -1521,7 +1512,7 @@ end
if (debug_mcontr_compressor_eot) debug_mcontr_count_end <= {sr_ch2rdy, compressor_done_input, confirmFrame2Compressor, debug_mcontr_count};
end
reg [11:0] debug_interrupt_counts;
reg [11:0] debug_interrupt_counts; //SuppressThisWarning Veditor UNUSED
reg [ 3:0] debug_interrupt_frames=0;
reg [ 3:0] debug_interrupt_starts=0;
reg [ 3:0] debug_interrupt_dones=0;
......@@ -1538,7 +1529,7 @@ end
end
`endif
wire [2:0] compressor_test_state; // {is_compressing,cmprs_repeat,cmprs_en}
wire [2:0] compressor_test_state; // {is_compressing,cmprs_repeat,cmprs_en} //SuppressThisWarning Veditor UNUSED
compressor i_compressor( .clk(xclk), // compressor pixel clock (80MHz?)
.clk2x(sclk0), // twice compressor pixel clock (120MHz) - for huffman/stuffer), memory clock, input data clock (negedge)
.cwe(da_compressor), // we to compressor from CPU
......@@ -1719,9 +1710,11 @@ end
// dummy module instances
wire iclk2;
(* keep *)
wire iclk2; // SuppressThisWarning Veditor UNUSED
IBUF i_iclk2 (.I(CLK2), .O(iclk2));
wire iclk4;
(* keep *)
wire iclk4; // SuppressThisWarning Veditor UNUSED
IBUF i_iclk4 (.I(CLK4), .O(iclk4));
IBUF i_iclk3 (.I(CLK3), .O(iclk3));
......@@ -1729,8 +1722,8 @@ wire iclk4;
// 3 legacy wires
assign itrig=io_pins[5];
assign sr_sda1=io_pins[1];
assign sr_scl1=io_pins[0];
///AF: assign sr_sda1=io_pins[1];
///AF: assign sr_scl1=io_pins[0];
IOBUF i_iopins0 (.I(io_do[ 0]), .T(io_t[ 0]), .O(io_pins[ 0]), .IO(EXT[ 0]));
IOBUF i_iopins1 (.I(io_do[ 1]), .T(io_t[ 1]), .O(io_pins[ 1]), .IO(EXT[ 1]));
......
......@@ -201,14 +201,14 @@ TIMESPEC "TS_CLK1" = PERIOD "CLK1" 10.4 ns HIGH 50 %; #96MHz
#TIMESPEC "TS_CLK1" = PERIOD "CLK1" 18.4 ns HIGH 50 %; #TEMPORARY TO FIND A PROBLEM
TIMEGRP "CPU_ADDR" = pads("A<*>");
TIMEGRP "CPU_ADDRCE" = "CPU_ADDR" pads("CE*");
TIMEGRP "CPU_DATA" = pads("D<*>");
TIMEGRP "WE" = pads("WE");
TIMEGRP "OE" = pads("OE");
TIMEGRP "DACK_PAD"= pads("DACK*");
TIMEGRP "DREQ_PAD"= pads("DREQ*");
TIMEGRP "ALLPADS"= pads("*");
TIMEGRP "CPU_ADDR" = PADS("A<*>");
TIMEGRP "CPU_ADDRCE" = "CPU_ADDR" PADS("CE*");
TIMEGRP "CPU_DATA" = PADS("D<*>");
TIMEGRP "WE" = PADS("WE");
TIMEGRP "OE" = PADS("OE");
TIMEGRP "DACK_PAD"= PADS("DACK*");
TIMEGRP "DREQ_PAD"= PADS("DREQ*");
TIMEGRP "ALLPADS"= PADS("*");
NET "idack0" TPTHRU = "IDACK0_TP";
NET "idack1" TPTHRU = "IDACK1_TP";
......@@ -217,8 +217,8 @@ NET "idack1" TPTHRU = "IDACK1_TP";
#TIMESPEC "TS_DACK_DREQ0" = FROM "DACK_PAD" THRU "IDACK0_TP" THRU "IDREQ0_TP" TO "DREQ_PAD" 9.5 ns;
#TIMESPEC "TS_DACK_DREQ1" = FROM "DACK_PAD" THRU "IDACK1_TP" THRU "IDREQ1_TP" TO "DREQ_PAD" 9.5 ns;
NET "*/cwr" TNM_NET = "TNM_CWR";
TIMEGRP "TG_CWRDEST" = "TNM_CWR" except latches ("*"); # RAMS, FFS
###MARK1# TIMEGRP "TG_LATCHES_A" = latches ("i_sysinterface/i_a*");
TIMEGRP "TG_CWRDEST" = "TNM_CWR" except LATCHES ("*"); # RAMS, FFS
###MARK1# TIMEGRP "TG_LATCHES_A" = LATCHES ("i_sysinterface/i_a*");
NET "DACK*" TNM_NET = "DACK";
NET "SDA0*" TNM_NET = "SDA0";
NET "sclk0" TNM_NET = "TNM_CLK0";
......@@ -242,8 +242,8 @@ NET "i_sensorpads/i_sensor_phase/mode_14bits_sync" TIG;
NET "hact_length*" TIG;
NET "cb_*" TIG;
TIMEGRP "TG_CLK1" = pads("CLK1");
TIMEGRP "TG_DCLK" = pads("DCLK");
TIMEGRP "TG_CLK1" = PADS("CLK1");
TIMEGRP "TG_DCLK" = PADS("DCLK");
#TIMESPEC "TS_SENSORCLOCK" = FROM "TG_CLK1" TO "TG_DCLK" 14.0 ns;
......@@ -268,65 +268,65 @@ TIMESPEC "TS_DACK0" = FROM "DACK" TO "ALLPADS" 17 ns;
TIMEGRP "TG_ALL_SYNC"= FFS RAMS MULTS;
TIMEGRP "TG_DOUBLECYCS2"= ffs("i_mcontr/i_descrproc/seq_par*")
ffs("i_mcontr/i_descrproc/sa*")
ffs("i_mcontr/i_descrproc/nxtTL*")
ffs("i_mcontr/i_descrproc/tile*")
ffs("i_mcontr/i_descrproc/mode*")
ffs("i_mcontr/i_descrproc/WnR*")
ffs("i_mcontr/i_descrproc/depend*")
ffs("i_mcontr/i_descrproc/nextFrame*")
ffs("i_mcontr/i_descrproc/suspXfer*")
ffs("i_mcontr/i_descrproc/lineNumSource*")
ffs("i_mcontr/i_descrproc/lineNumDest*")
ffs("i_mcontr/i_descrproc/prevStripSource*")
ffs("i_mcontr/i_descrproc/last_lines_reg*")
ffs("i_mcontr/i_descrproc/first_tile_reg*")
ffs("i_mcontr/i_descrproc/first_tile_dest*")
ffs("i_mcontr/i_descrproc/nxtTFr*")
ffs("i_mcontr/i_descrproc/srcAtStart*")
mults("i_mcontr/i_descrproc/linAddr*");
TIMEGRP "TG_DOUBLECYCS2"= FFS("i_mcontr/i_descrproc/seq_par*")
FFS("i_mcontr/i_descrproc/sa*")
FFS("i_mcontr/i_descrproc/nxtTL*")
FFS("i_mcontr/i_descrproc/tile*")
FFS("i_mcontr/i_descrproc/mode*")
FFS("i_mcontr/i_descrproc/WnR*")
FFS("i_mcontr/i_descrproc/depend*")
FFS("i_mcontr/i_descrproc/nextFrame*")
FFS("i_mcontr/i_descrproc/suspXfer*")
FFS("i_mcontr/i_descrproc/lineNumSource*")
FFS("i_mcontr/i_descrproc/lineNumDest*")
FFS("i_mcontr/i_descrproc/prevStripSource*")
FFS("i_mcontr/i_descrproc/last_lines_reg*")
FFS("i_mcontr/i_descrproc/first_tile_reg*")
FFS("i_mcontr/i_descrproc/first_tile_dest*")
FFS("i_mcontr/i_descrproc/nxtTFr*")
FFS("i_mcontr/i_descrproc/srcAtStart*")
MULTS("i_mcontr/i_descrproc/linAddr*");
TIMESPEC "TS_DOUBLECYCS2" = FROM "TG_DOUBLECYCS2" TO "TG_ALL_SYNC" "TS_CLK0" * 2;
TIMEGRP "TG_FAST_SRC3"= ffs("*stepsE*") ffs("*stepsI*") ffs("*stepsDwe*");
TIMEGRP "TG_FAST_SRC3"= FFS("*stepsE*") FFS("*stepsI*") FFS("*stepsDwe*");
TIMEGRP "TG_SLOW_SRC3" = TG_ALL_SYNC EXCEPT "TG_FAST_SRC3";
TIMEGRP "TG_DOUBLEDEST3"= ffs("i_mcontr/i_descrproc/seq_par*")
ffs("i_mcontr/i_descrproc/sa*")
ffs("i_mcontr/i_descrproc/nxtTL*")
ffs("i_mcontr/i_descrproc/tile*")
ffs("i_mcontr/i_descrproc/mode*")
ffs("i_mcontr/i_descrproc/WnR*")
ffs("i_mcontr/i_descrproc/depend*")
ffs("i_mcontr/i_descrproc/nextFrame*")
ffs("i_mcontr/i_descrproc/nextBlocksEn*")
ffs("i_mcontr/i_descrproc/suspXfer*")
ffs("i_mcontr/i_descrproc/lineNumSource*")
ffs("i_mcontr/i_descrproc/lineNumDest*")
ffs("i_mcontr/i_descrproc/prevStripSource*")
ffs("i_mcontr/i_descrproc/rovr*")
ffs("i_mcontr/i_descrproc/last_lines_reg*")
ffs("i_mcontr/i_descrproc/first_tile_reg*")
ffs("i_mcontr/i_descrproc/first_tile_dest*")
ffs("i_mcontr/i_descrproc/nxtTFr*")
ffs("i_mcontr/i_descrproc/nxtTF_p*")
ffs("i_mcontr/i_descrproc/srcAtStart*")
mults("i_mcontr/i_descrproc/linAddr*");
TIMEGRP "TG_DOUBLEDEST3"= FFS("i_mcontr/i_descrproc/seq_par*")
FFS("i_mcontr/i_descrproc/sa*")
FFS("i_mcontr/i_descrproc/nxtTL*")
FFS("i_mcontr/i_descrproc/tile*")
FFS("i_mcontr/i_descrproc/mode*")
FFS("i_mcontr/i_descrproc/WnR*")
FFS("i_mcontr/i_descrproc/depend*")
FFS("i_mcontr/i_descrproc/nextFrame*")
FFS("i_mcontr/i_descrproc/nextBlocksEn*")
FFS("i_mcontr/i_descrproc/suspXfer*")
FFS("i_mcontr/i_descrproc/lineNumSource*")
FFS("i_mcontr/i_descrproc/lineNumDest*")
FFS("i_mcontr/i_descrproc/prevStripSource*")
FFS("i_mcontr/i_descrproc/rovr*")
FFS("i_mcontr/i_descrproc/last_lines_reg*")
FFS("i_mcontr/i_descrproc/first_tile_reg*")
FFS("i_mcontr/i_descrproc/first_tile_dest*")
FFS("i_mcontr/i_descrproc/nxtTFr*")
FFS("i_mcontr/i_descrproc/nxtTF_p*")
FFS("i_mcontr/i_descrproc/srcAtStart*")
MULTS("i_mcontr/i_descrproc/linAddr*");
TIMESPEC "TS_DOUBLECYCS3" = FROM "TG_SLOW_SRC3" TO "TG_DOUBLEDEST3" "TS_CLK0" * 2;
## Next - redundant?
##TIMESPEC "TS_DOUBLECYCS4" = FROM FFS("*i_chArbit/chNum*") TO "TG_DOUBLEDEST3" TS_CLK0*2;
TIMEGRP "TG_HUFFRAMS"= rams ("*i_huffman*") ;
TIMEGRP "TG_HUFFRAMS"= RAMS ("*i_huffman*") ;
#FIXME: Constraint <TIMEGRP "TG_HUFFFFS" ... does not match any design objects.
TIMEGRP "TG_HUFFFFS"= ffs ("*i_huffman*")
ffs ("*i_stuffer*") ;
TIMEGRP "TG_HUFFFFS"= FFS ("*i_huffman*")
FFS ("*i_stuffer*") ;
TIMEGRP "TG_HUFFLATCHES"= latches ("*i_huffman*") ;
TIMEGRP "TG_HUFFLATCHES"= LATCHES ("*i_huffman*") ;
# some registers in Huffman module are isolated from others through latches too - never used?
##TIMEGRP "TG_HUFFFFS_ISOLOUT" = ffs ("*i_huff_fifo/load_q");
##TIMEGRP "TG_HUFFFFS_ISOLOUT" = FFS ("*i_huff_fifo/load_q");
TIMEGRP "TG_STUFFER_WAS_READY_EARLY" = latches ("i_compressor/i_huffman/i_stuffer_was_rdy_early") ;
TIMEGRP "TG_HUFF_FIFO_LOAD_Q" = ffs ("i_compressor/i_huffman/i_huff_fifo/load_q") ;
TIMEGRP "TG_COMPRESSOR"= ffs ("*i_compressor*") ;
TIMEGRP "TG_STUFFER_WAS_READY_EARLY" = LATCHES ("i_compressor/i_huffman/i_stuffer_was_rdy_early") ;
TIMEGRP "TG_HUFF_FIFO_LOAD_Q" = FFS ("i_compressor/i_huffman/i_huff_fifo/load_q") ;
TIMEGRP "TG_COMPRESSOR"= FFS ("*i_compressor*") ;
### THe two below constraints are not needed, they are covered by "TS_HUFFLATCHES" and "TS_HUFFLATCHESI"
## TIMESPEC "TS_HUFF_FIFO_LOAD_Q"= FROM "TG_STUFFER_WAS_READY_EARLY" TO "TG_HUFFFFS" "TS_CLK0" * 0.625;
## TIMESPEC "TS_STUFFER_WAS_READY_EARLY"= FROM "TG_HUFFFFS" TO "TG_STUFFER_WAS_READY_EARLY" "TS_CLK0" * 0.7;
......@@ -376,8 +376,8 @@ TIMESPEC "TS_PCLK_PCLK2X" = FROM "TNM_PCLK" TO "TNM_PCLK2X" TIG;
TIMEGRP "TG_HIST_DOUBLE_DEST"= ffs("*hist_post*");
TIMEGRP "TG_HIST_DOUBLE_SRC "= ffs("*hist_pre*");
TIMEGRP "TG_HIST_DOUBLE_DEST"= FFS("*hist_post*");
TIMEGRP "TG_HIST_DOUBLE_SRC "= FFS("*hist_pre*");
TIMESPEC "TS_HIST_DOUBLECYC1" = FROM FFS("*hist_pre*") TO FFS("*hist_post*") "TS_CLK1" ;
......@@ -388,10 +388,10 @@ INST "i_histogram/size_height_*" TIG;
INST "i_histogram/minus_pos_left_*" TIG;
INST "i_histogram/pos_left_is_zero*" TIG;
TIMEGRP "TG_HIST_DOUBLE2_SRC"= ffs("i_histogram/pix_cntr*");
TIMEGRP "TG_HIST_DOUBLE2_DST"= ffs("i_histogram/pix_cntr*")
ffs("i_histogram/line_started*")
ffs("i_histogram/line_ended*") ;
TIMEGRP "TG_HIST_DOUBLE2_SRC"= FFS("i_histogram/pix_cntr*");
TIMEGRP "TG_HIST_DOUBLE2_DST"= FFS("i_histogram/pix_cntr*")
FFS("i_histogram/line_started*")
FFS("i_histogram/line_ended*") ;
TIMESPEC "TS_HIST_DOUBLECYC2" = FROM "TG_HIST_DOUBLE2_SRC" TO "TG_HIST_DOUBLE2_DST" "TS_CLK1" ;
......
<<<<<<< x353_1.sav
[*]
[*] GTKWave Analyzer v3.3.64 (w)1999-2014 BSI
[*] Mon Jul 27 06:55:08 2015
[*]
[dumpfile] "/home/andrey/git/x353/simulation/x353_1-20150727004619246.lxt"
[dumpfile_mtime] "Mon Jul 27 06:47:53 2015"
[dumpfile_size] 49089165
[savefile] "/home/andrey/git/x353/x353_1.sav"
[timestart] 0
[size] 1844 1178
[pos] 1910 0
*-27.431326 555456250 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
=======
[timestart] 214700000
[size] 1844 1170
[pos] 1910 0
*-24.692209 307364625 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
>>>>>>> 1.14
[size] 1823 1173
[pos] 1917 0
*-25.064463 110293750 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
[treeopen] testbench353.
[treeopen] testbench353.i_x353.
<<<<<<< x353_1.sav
[treeopen] testbench353.i_x353.i_camsync.
[treeopen] testbench353.i_x353.i_compressor.
=======
[treeopen] testbench353.i_x353.i_imu_logger.
>>>>>>> 1.14
[treeopen] testbench353.i_x353.i_mcontr.i_descrproc.
[treeopen] testbench353.i_x353.i_mcontr.
[treeopen] testbench353.i_x353.i_sensorpads.i_sensor_phase.
<<<<<<< x353_1.sav
[treeopen] testbench353.i_x353.i_sysinterface.i_we.
[sst_width] 335
[signals_width] 294
[sst_expanded] 1
[sst_vpaned_height] 430
@820
testbench353.TEST_TITLE[639:0]
@200
-
@800200
=======
[treeopen] testbench353.i_x353.i_sysinterface.i_we.
-sdram
@22
testbench353.i_x353.SDA[14:0]
@28
testbench353.i_x353.SDCAS[0]
testbench353.i_x353.SDCLKE[0]
testbench353.i_x353.SDCLK[0]
testbench353.i_x353.SDCLK_FB[0]
@22
testbench353.i_x353.SDD[15:0]
@28
testbench353.i_x353.SDLDM[0]
testbench353.i_x353.SDNCLK[0]
testbench353.i_x353.SDNCLK_FB[0]
testbench353.i_x353.SDRAS[0]
testbench353.i_x353.SDUDM[0]
testbench353.i_x353.SDWE[0]
@1000200
-sdram
@c00200
>>>>>>> 1.14
>1
-system
@28
testbench353.i_sensor12bits.ARO
testbench353.i_x353.CLK1
testbench353.VACT
testbench353.i_x353.vacts_every
testbench353.i_x353.vacts_long
testbench353.HACT
@22
>1
testbench353.i_sensor12bits.ARO[0]
>1
testbench353.i_x353.CLK1[0]
>1
testbench353.VACT[0]
>1
testbench353.i_x353.vacts_every[0]
>1
testbench353.i_x353.vacts_long[0]
>1
testbench353.HACT[0]
@22
>1
testbench353.PXD[11:0]
@28
testbench353.DREQ
testbench353.DACK
>1
testbench353.DREQ[0]
>1
testbench353.DACK[0]
@22
>1
testbench353.DMA_DI[31:0]
>1
testbench353.CPU_DI[31:0]
>1
testbench353.CPU_DO[31:0]
@28
>1
testbench353.i_x353.cb_bayer_phase[1:0]
<<<<<<< x353_1.sav
testbench353.i_x353.DREQ0
testbench353.i_x353.DACK0
testbench353.i_x353.DREQ1
testbench353.i_x353.DACK1
@22
>1
testbench353.i_x353.DREQ0[0]
>1
testbench353.i_x353.DACK0[0]
>1
testbench353.i_x353.DREQ1[0]
>1
testbench353.i_x353.DACK1[0]
@22
>1
testbench353.DMA_DI_1[31:0]
@28
testbench353.i_x353.vacts
@23
>1
testbench353.i_x353.vacts[0]
@22
>1
testbench353.i_x353.i2c_frame_no[2:0]
@28
testbench353.i_x353.i_irq_smart.is_compressing
testbench353.i_x353.i_irq_smart.wait_frame_sync
testbench353.IRQ
testbench353.i_x353.compressor_eot
testbench353.i_x353.compressor_done_compress
testbench353.i_x353.compressor_done_input
testbench353.i_x353.compressor_done_pulse
testbench353.i_x353.compressor_started
@22
>1
testbench353.i_x353.i_irq_smart.is_compressing[0]
>1
testbench353.i_x353.i_irq_smart.wait_frame_sync[0]
>1
testbench353.IRQ[0]
>1
testbench353.i_x353.compressor_eot[0]
>1
testbench353.i_x353.compressor_done_compress[0]
>1
testbench353.i_x353.compressor_done_input[0]
>1
testbench353.i_x353.compressor_done_pulse[0]
>1
testbench353.i_x353.compressor_started[0]
@22
>1
testbench353.i_x353.i_compressor.imgptr[23:0]
@28
testbench353.i_x353.i_irq_smart.compressor_done
testbench353.i_x353.i_irq_smart.compressor_fifo_done
testbench353.i_x353.i_irq_smart.delaying_done_irq
>1
testbench353.i_x353.i_irq_smart.compressor_done[0]
>1
testbench353.i_x353.i_irq_smart.compressor_fifo_done[0]
>1
testbench353.i_x353.i_irq_smart.delaying_done_irq[0]
@22
>1
testbench353.i_x353.i_irq_smart.di[15:0]
@28
testbench353.i_x353.i_irq_smart.done_request
testbench353.i_x353.i_irq_smart.end_postpone_fs
testbench353.i_x353.i_irq_smart.fifo_empty
testbench353.i_x353.i_irq_smart.finished
testbench353.i_x353.i_irq_smart.frame_sync
testbench353.i_x353.i_irq_smart.fs_postponed
testbench353.i_x353.i_irq_smart.irq
testbench353.i_x353.i_irq_smart.is_compressing
testbench353.i_x353.i_compressor.eot
testbench353.i_x353.i_compressor.i_huffman.last_block
testbench353.i_x353.i_compressor.i_huffman.gotLastBlock
testbench353.i_x353.i_compressor.color_first
testbench353.i_x353.i_compressor.color_last
testbench353.i_x353.i_compressor.i_encoderDCAC.lasti
testbench353.i_x353.i_compressor.i_encoderDCAC.lasto
testbench353.i_x353.i_irq_smart.is_finishing
testbench353.i_x353.i_irq_smart.rst
testbench353.i_x353.i_irq_smart.wait_fifo
testbench353.i_x353.i_irq_smart.wait_frame_sync
testbench353.i_x353.i_irq_smart.was_finishing
testbench353.i_x353.i_irq_smart.will_delay_done_irq
testbench353.i_x353.i_irq_smart.will_postpone_fs
testbench353.i_x353.i_camsync.restart
testbench353.i_x353.i_compressor.compressor_started
testbench353.i_x353.i_compressor.stuffer_done
testbench353.i_x353.i_compressor.i_stuffer.flush
testbench353.i_x353.i_compressor.i_stuffer.flush_end
testbench353.i_x353.i_compressor.i_stuffer.flush_end_delayed
testbench353.i_x353.i_compressor.i_stuffer.flush_now
testbench353.i_x353.i_compressor.i_stuffer.flushing
@1000200
=======
testbench353.i_x353.DREQ0
testbench353.i_x353.DACK0
testbench353.i_x353.DREQ1
testbench353.i_x353.DACK1
@22
testbench353.DMA_DI_1[31:0]
@1401200
>>>>>>> 1.14
-system
@c00022
testbench353.i_x353.D[31:0]
<<<<<<< x353_1.sav
@28
(0)testbench353.i_x353.D[31:0]
(1)testbench353.i_x353.D[31:0]
(2)testbench353.i_x353.D[31:0]
(3)testbench353.i_x353.D[31:0]
(4)testbench353.i_x353.D[31:0]
(5)testbench353.i_x353.D[31:0]
(6)testbench353.i_x353.D[31:0]
(7)testbench353.i_x353.D[31:0]
(8)testbench353.i_x353.D[31:0]
(9)testbench353.i_x353.D[31:0]
(10)testbench353.i_x353.D[31:0]
(11)testbench353.i_x353.D[31:0]
(12)testbench353.i_x353.D[31:0]
(13)testbench353.i_x353.D[31:0]
(14)testbench353.i_x353.D[31:0]
(15)testbench353.i_x353.D[31:0]
(16)testbench353.i_x353.D[31:0]
(17)testbench353.i_x353.D[31:0]
(18)testbench353.i_x353.D[31:0]
(19)testbench353.i_x353.D[31:0]
(20)testbench353.i_x353.D[31:0]
(21)testbench353.i_x353.D[31:0]
(22)testbench353.i_x353.D[31:0]
(23)testbench353.i_x353.D[31:0]
(24)testbench353.i_x353.D[31:0]
(25)testbench353.i_x353.D[31:0]
(26)testbench353.i_x353.D[31:0]
(27)testbench353.i_x353.D[31:0]
(28)testbench353.i_x353.D[31:0]
(29)testbench353.i_x353.D[31:0]
(30)testbench353.i_x353.D[31:0]
(31)testbench353.i_x353.D[31:0]
@1401200
-group_end
@800200
=======
@28
(0)testbench353.i_x353.D[31:0]
(1)testbench353.i_x353.D[31:0]
(2)testbench353.i_x353.D[31:0]
(3)testbench353.i_x353.D[31:0]
(4)testbench353.i_x353.D[31:0]
(5)testbench353.i_x353.D[31:0]
(6)testbench353.i_x353.D[31:0]
(7)testbench353.i_x353.D[31:0]
(8)testbench353.i_x353.D[31:0]
(9)testbench353.i_x353.D[31:0]
(10)testbench353.i_x353.D[31:0]
(11)testbench353.i_x353.D[31:0]
(12)testbench353.i_x353.D[31:0]
(13)testbench353.i_x353.D[31:0]
(14)testbench353.i_x353.D[31:0]
(15)testbench353.i_x353.D[31:0]
(16)testbench353.i_x353.D[31:0]
(17)testbench353.i_x353.D[31:0]
(18)testbench353.i_x353.D[31:0]
(19)testbench353.i_x353.D[31:0]
(20)testbench353.i_x353.D[31:0]
(21)testbench353.i_x353.D[31:0]
(22)testbench353.i_x353.D[31:0]
(23)testbench353.i_x353.D[31:0]
(24)testbench353.i_x353.D[31:0]
(25)testbench353.i_x353.D[31:0]
(26)testbench353.i_x353.D[31:0]
(27)testbench353.i_x353.D[31:0]
(28)testbench353.i_x353.D[31:0]
(29)testbench353.i_x353.D[31:0]
(30)testbench353.i_x353.D[31:0]
(31)testbench353.i_x353.D[31:0]
@1401200
-group_end
>1
testbench353.i_x353.i_irq_smart.done_request[0]
>1
testbench353.i_x353.i_irq_smart.end_postpone_fs[0]
>1
testbench353.i_x353.i_irq_smart.fifo_empty[0]
>1
testbench353.i_x353.i_irq_smart.finished[0]
>1
testbench353.i_x353.i_irq_smart.frame_sync[0]
>1
testbench353.i_x353.i_irq_smart.fs_postponed[0]
>1
testbench353.i_x353.i_irq_smart.irq[0]
>1
testbench353.i_x353.i_irq_smart.is_compressing[0]
>1
testbench353.i_x353.i_compressor.eot[0]
>1
testbench353.i_x353.i_compressor.i_huffman.last_block[0]
>1
testbench353.i_x353.i_compressor.i_huffman.gotLastBlock[0]
>1
testbench353.i_x353.i_compressor.color_first[0]
>1
testbench353.i_x353.i_compressor.color_last[0]
>1
testbench353.i_x353.i_compressor.i_encoderDCAC.lasti[0]
>1
testbench353.i_x353.i_compressor.i_encoderDCAC.lasto[0]
>1
testbench353.i_x353.i_irq_smart.is_finishing[0]
>1
testbench353.i_x353.i_irq_smart.rst[0]
>1
testbench353.i_x353.i_irq_smart.wait_fifo[0]
>1
testbench353.i_x353.i_irq_smart.wait_frame_sync[0]
>1
testbench353.i_x353.i_irq_smart.was_finishing[0]
>1
testbench353.i_x353.i_irq_smart.will_delay_done_irq[0]
>1
testbench353.i_x353.i_irq_smart.will_postpone_fs[0]
>1
testbench353.i_x353.i_camsync.restart[0]
>1
testbench353.i_x353.i_compressor.compressor_started[0]
>1
testbench353.i_x353.i_compressor.stuffer_done[0]
>1
testbench353.i_x353.i_compressor.i_stuffer.flush[0]
>1
testbench353.i_x353.i_compressor.i_stuffer.flush_end[0]
>1
testbench353.i_x353.i_compressor.i_stuffer.flush_end_delayed[0]
>1
testbench353.i_x353.i_compressor.i_stuffer.flush_now[0]
>1
testbench353.i_x353.i_compressor.i_stuffer.flushing[0]
@1401200
>1
-DREQ0[0]
@c00200
>>>>>>> 1.14
-color_conversion
@22
testbench353.i_x353.i_compressor.i_color_proc.nblocks[17:0]
@28
testbench353.i_x353.i_compressor.i_color_proc.noMoreData
testbench353.i_x353.i_compressor.i_color_proc.go
@22
testbench353.i_x353.i_compressor.i_color_proc.bcntr[17:0]
@28
testbench353.i_x353.i_compressor.i_color_proc.ccv_start_en
testbench353.i_x353.i_compressor.i_color_proc.sdram_rdy
testbench353.i_x353.i_compressor.i_color_proc.all_ready
@22
testbench353.i_x353.i_compressor.i_color_proc.seq_cntr[8:0]
@28
testbench353.i_x353.i_compressor.i_color_proc.pre_first_pixel
testbench353.i_x353.i_compressor.i_color_proc.first_pixel
testbench353.i_x353.i_compressor.i_color_proc.last0
testbench353.i_x353.i_compressor.i_color_proc.last
@22
testbench353.i_x353.i_compressor.cmprs_mode[3:0]
testbench353.i_x353.i_compressor.component_color
@28
testbench353.i_x353.i_compressor.component_first
testbench353.i_x353.i_compressor.component_lastinmb
@800022
testbench353.i_x353.i_compressor.component_num[2:0]
@28
(0)testbench353.i_x353.i_compressor.component_num[2:0]
(1)testbench353.i_x353.i_compressor.component_num[2:0]
(2)testbench353.i_x353.i_compressor.component_num[2:0]
@1001200
-group_end
@22
testbench353.i_x353.i_compressor.converter_type[2:0]
testbench353.i_x353.i_compressor.color_tn[2:0]
@28
testbench353.i_x353.i_compressor.i_color_proc.clk
@22
testbench353.i_x353.i_compressor.color_d[9:0]
testbench353.i_x353.i_compressor.color_avr[8:0]
@28
testbench353.i_x353.i_compressor.color_dv
@22
testbench353.i_x353.i_compressor.i_color_proc.converter_type_r[2:0]
testbench353.i_x353.i_compressor.i_color_proc.c_in[8:0]
testbench353.i_x353.i_compressor.i_color_proc.c_out[8:0]
@28
testbench353.i_x353.i_compressor.i_color_proc.cwe
testbench353.i_x353.i_compressor.i_color_proc.buf_sel
testbench353.i_x353.i_compressor.i_color_proc.ccv_out_start
testbench353.i_x353.i_compressor.i_color_proc.ccv_start_en
testbench353.i_x353.i_compressor.i_color_proc.go
@22
testbench353.i_x353.i_compressor.i_color_proc.do[9:0]
@28
testbench353.i_x353.i_compressor.i_color_proc.ds
testbench353.i_x353.i_compressor.i_color_proc.dv
@1000200
-color_conversion
@c00200
-channel0
@28
testbench353.i_x353.i_sensorpix.hact
@c00022
testbench353.i_x353.i_sensorpix.pxd[15:0]
@28
(0)testbench353.i_x353.i_sensorpix.pxd[15:0]
(1)testbench353.i_x353.i_sensorpix.pxd[15:0]
(2)testbench353.i_x353.i_sensorpix.pxd[15:0]
(3)testbench353.i_x353.i_sensorpix.pxd[15:0]
(4)testbench353.i_x353.i_sensorpix.pxd[15:0]
(5)testbench353.i_x353.i_sensorpix.pxd[15:0]
(6)testbench353.i_x353.i_sensorpix.pxd[15:0]
(7)testbench353.i_x353.i_sensorpix.pxd[15:0]
(8)testbench353.i_x353.i_sensorpix.pxd[15:0]
(9)testbench353.i_x353.i_sensorpix.pxd[15:0]
(10)testbench353.i_x353.i_sensorpix.pxd[15:0]
(11)testbench353.i_x353.i_sensorpix.pxd[15:0]
(12)testbench353.i_x353.i_sensorpix.pxd[15:0]
(13)testbench353.i_x353.i_sensorpix.pxd[15:0]
(14)testbench353.i_x353.i_sensorpix.pxd[15:0]
(15)testbench353.i_x353.i_sensorpix.pxd[15:0]
@1401200
-group_end
>0
-mcontr
@28
testbench353.i_x353.UDQS[0]
testbench353.i_x353.LDQS[0]
@200
>1
-DREQ1[0]
>1
-DACK1[0]
@22
>1
testbench353.DMA_DI_1[31:0]
@28
testbench353.i_x353.i_sensorpix.hact_out
testbench353.i_x353.i_sensorpix.dwe
>0
testbench353.i_x353.i_mcontr.WnR[0]
@22
testbench353.i_x353.i_sensorpix.do[15:0]
testbench353.i_x353.i_mcontr.am[3:0]
testbench353.i_x353.i_mcontr.as[3:0]
testbench353.i_x353.i_mcontr.bmad0[8:0]
testbench353.i_x353.i_mcontr.bmad1[8:0]
testbench353.i_x353.i_mcontr.bmad2[8:0]
testbench353.i_x353.i_mcontr.bmad3[8:0]
testbench353.i_x353.i_mcontr.bonded[3:0]
testbench353.i_x353.i_mcontr.ch0a[9:0]
@28
testbench353.i_x353.i_mcontr.ch0clk
testbench353.i_x353.i_mcontr.ch0clk[0]
@22
testbench353.i_x353.i_mcontr.ch0di[15:0]
@28
testbench353.i_x353.i_mcontr.ch0en
testbench353.i_x353.i_mcontr.ch0en[0]
@22
testbench353.i_x353.i_mcontr.ch0rd[31:0]
@28
testbench353.i_x353.i_mcontr.ch0rdy
testbench353.i_x353.i_mcontr.ch0rdy[0]
testbench353.i_x353.i_mcontr.ch0we[0]
@22
testbench353.i_mt46v16m16fg.Dq[15:0]
testbench353.i_x353.i_mcontr.ch1a[9:0]
@28
testbench353.i_mt46v16m16fg.Cas_n
testbench353.i_mt46v16m16fg.We_n
testbench353.i_mt46v16m16fg.Clk
testbench353.i_x353.i_mcontr.ch1clk[0]
@22
testbench353.i_x353.i_mcontr.ch0a[9:0]
testbench353.i_x353.i_mcontr.ch1do[15:0]
@28
testbench353.i_x353.i_mcontr.ch0we
testbench353.i_x353.i_mcontr.ch1rdy[0]
testbench353.i_x353.i_mcontr.ch1we[0]
@22
testbench353.i_x353.i_mcontr.ch0di[15:0]
@28
testbench353.i_x353.i_mcontr.readNextFrame0
testbench353.i_x353.i_mcontr.stch0
testbench353.i_x353.i_sensorpix.wpage
testbench353.i_x353.i_sensorpix.incbwa
@1401200
-channel0
@c00200
-aaa
testbench353.i_x353.i_mcontr.ch2a[10:0]
@28
testbench353.i_x353.i_sensorpads.clk
testbench353.i_x353.i_sensorpads.hact
testbench353.i_x353.i_sensorpads.vact
testbench353.i_x353.i_sensorpads.ihact
testbench353.i_x353.i_sensorpads.vacts
testbench353.i_x353.i_mcontr.ch2clk[0]
@22
testbench353.i_x353.i_sensorpads.pxd[11:0]
testbench353.i_x353.i_sensorpads.ipxd[15:0]
@1401200
-aaa
@c00200
-quantizer
-sensor_phase
@22
testbench353.i_x353.i_sensorpads.i_sensor_phase.svact_filter_cntr[7:0]
@28
testbench353.i_x353.i_sensorpads.i_sensor_phase.en_svact_sync
testbench353.i_x353.i_sensorpads.i_sensor_phase.pre_svact
testbench353.i_x353.i_sensorpads.i_sensor_phase.pre_svact_d
testbench353.i_x353.i_sensorpads.i_sensor_phase.svact
@800022
testbench353.i_x353.i_sensorpads.i_sensor_phase.hact_q0_d[3:0]
@28
(3)testbench353.i_x353.i_sensorpads.i_sensor_phase.hact_q0_d[3:0]
@1001200
-group_end
@800028
testbench353.i_x353.i_sensorpads.i_sensor_phase.shact_zero[1:0]
@28
(0)testbench353.i_x353.i_sensorpads.i_sensor_phase.shact_zero[1:0]
@1001200
-group_end
@28
testbench353.i_x353.i_sensorpads.i_sensor_phase.hact_selected_2_cycles
testbench353.i_x353.i_sensorpads.i_sensor_phase.pre_shact
testbench353.i_x353.i_sensorpads.i_sensor_phase.hact_regen
testbench353.i_x353.i_sensorpads.i_sensor_phase.hact_regen_isync
testbench353.i_x353.i_sensorpads.i_sensor_phase.hact_regen_sync
testbench353.i_x353.i_sensorpads.clk_sel
testbench353.i_x353.i_sensorpads.i_sensor_phase.iclk
testbench353.i_x353.i_sensorpads.i_sensor_phase.wcmd
testbench353.i_x353.i_sensorpads.i_sensor_phase.dcm_en
testbench353.i_x353.i_sensorpads.i_sensor_phase.dcm_rst
testbench353.i_x353.i_sensorpads.i_sensor_phase.sync_alt
testbench353.i_x353.BPF
testbench353.i_sensor12bits.DCLK
testbench353.i_x353.i_sensorpads.i_sensor_phase.wcmd
@22
testbench353.i_x353.idi[31:0]
testbench353.i_x353.i_sensorpads.i_sensor_phase.cmd[5:0]
testbench353.i_x353.PXD[9:0]
@28
testbench353.i_x353.i_sensorpads.i_sensor_phase.HACT
testbench353.i_x353.i_sensorpads.i_sensor_phase.VACT
testbench353.i_x353.i_sensorpads.i_sensor_phase.mode_12bits
testbench353.i_x353.i_sensorpads.i_sensor_phase.mode_14bits
testbench353.i_x353.i_sensorpads.i_sensor_phase.mode_alt
testbench353.i_x353.i_sensorpads.i_sensor_phase.hact_vd
testbench353.i_x353.i_sensorpads.i_sensor_phase.gclk_idata
testbench353.i_x353.i_sensorpads.i_sensor_phase.en_idata
testbench353.i_x353.i_sensorpads.i_sensor_phase.sclk
testbench353.i_x353.i_sensorpads.i_sensor_phase.vact_vd
testbench353.i_x353.i_sensorpads.i_sensor_phase.phase_hact_sel_sync[2:0]
testbench353.i_x353.i_sensorpads.i_sensor_phase.phase_hact_sel[2:0]
testbench353.i_x353.i_sensorpads.i_sensor_phase.vact_selected_2_cycles
testbench353.i_x353.i_sensorpads.i_sensor_phase.hact_selected
testbench353.i_x353.i_sensorpads.i_sensor_phase.shact
testbench353.i_x353.i_sensorpads.i_sensor_phase.svact
@22
testbench353.i_x353.i_sensorpads.i_sensor_phase.sdo[13:0]
@28
testbench353.i_x353.i_sensorpads.i_sensor_phase.sim_rst
testbench353.i_x353.i_sensorpads.i_sensor_phase.reset_fifo_in_cntr
@22
testbench353.i_x353.i_sensorpads.i_sensor_phase.idi14[13:0]
testbench353.i_x353.i_sensorpads.i_sensor_phase.fifo_data_in_addr[3:0]
@28
testbench353.i_x353.i_sensorpads.i_sensor_phase.hact_selected_2_cycles
@22
testbench353.i_x353.i_sensorpads.i_sensor_phase.fifo_hact_in_addr[3:0]
testbench353.i_x353.i_sensorpads.i_sensor_phase.fifo_data_in_addr_saved[3:0]
@28
testbench353.i_x353.i_sensorpads.i_sensor_phase.dcm_done
testbench353.i_x353.i_sensorpads.i_sensor_phase.reset_out_fifo
@22
testbench353.i_x353.i_sensorpads.i_sensor_phase.fifo_out_addr[3:0]
@28
testbench353.i_x353.i_sensorpads.i_sensor_phase.dcm_rst_cmd
@800028
testbench353.i_x353.i_sensorpads.i_sensor_phase.dcm_in_locked[1:0]
@28
(0)testbench353.i_x353.i_sensorpads.i_sensor_phase.dcm_in_locked[1:0]
@1001200
-group_end
@22
testbench353.i_x353.i_sensorpads.i_sensor_phase.dcm_locked_cntr[3:0]
@28
testbench353.i_x353.i_sensorpads.i_sensor_phase.dcm_fifo_locked
testbench353.i_x353.i_sensorpads.i_sensor_phase.locked
testbench353.i_x353.i_sensorpads.i_sensor_phase.pre_shact
@22
testbench353.i_x353.i_sensorpads.i_sensor_phase.pre_sdo[13:0]
@28
testbench353.i_x353.i_sensorpads.i_sensor_phase.reset_fifo_in_cntr
@22
testbench353.i_x353.i_sensorpads.hact_length[13:0]
testbench353.i_x353.i_sensorpads.i_sensor_phase.hact_count[13:0]
@28
testbench353.i_x353.i_sensorpads.i_sensor_phase.hact_count_zero
@1401200
-sensor_phase
@c00200
-hist
@800022
testbench353.i_x353.i_histogram.dvld2x[3:0]
@28
(0)testbench353.i_x353.i_histogram.dvld2x[3:0]
(1)testbench353.i_x353.i_histogram.dvld2x[3:0]
(2)testbench353.i_x353.i_histogram.dvld2x[3:0]
(3)testbench353.i_x353.i_histogram.dvld2x[3:0]
@22
testbench353.i_x353.i_histogram.minus_pos_left[13:1]
@28
testbench353.i_x353.i_histogram.pos_left_is_zero
@22
testbench353.i_x353.i_histogram.pos_left[13:1]
testbench353.i_x353.i_histogram.size_width[13:1]
testbench353.i_x353.i_histogram.pix_cntr[13:1]
@1001200
-group_end
@c00028
testbench353.i_x353.i_histogram.line_run_s[2:0]
@28
(0)testbench353.i_x353.i_histogram.line_run_s[2:0]
(1)testbench353.i_x353.i_histogram.line_run_s[2:0]
(2)testbench353.i_x353.i_histogram.line_run_s[2:0]
@1401200
-group_end
@28
testbench353.i_x353.i_histogram.line_start
testbench353.i_x353.i_histogram.line_start_posl_zero
testbench353.i_x353.i_histogram.line_started
testbench353.i_x353.i_histogram.line_ended
testbench353.i_x353.i_histogram.window_on
@800022
testbench353.i_x353.i_histogram.hist_seq[5:0]
@28
(0)testbench353.i_x353.i_histogram.hist_seq[5:0]
(1)testbench353.i_x353.i_histogram.hist_seq[5:0]
(2)testbench353.i_x353.i_histogram.hist_seq[5:0]
(3)testbench353.i_x353.i_histogram.hist_seq[5:0]
(4)testbench353.i_x353.i_histogram.hist_seq[5:0]
(5)testbench353.i_x353.i_histogram.hist_seq[5:0]
@1001200
-group_end
@28
testbench353.i_x353.i_histogram.line_end
testbench353.i_x353.i_sensortrig.ff_count_eq0
testbench353.i_x353.i_sensortrig.vacts_in
testbench353.i_x353.i_sensortrig.state3
testbench353.i_x353.i_sensortrig.xfer_over
testbench353.i_x353.i_sensortrig.done
@22
testbench353.i_x353.i_sensortrig.nlines[13:0]
testbench353.i_x353.i_sensortrig.lines_left[13:0]
@28
testbench353.i_x353.line_run
@22
testbench353.i_x353.ipxd_ts[15:0]
@800028
testbench353.i_x353.sr_sensortrig[2:0]
@28
(0)testbench353.i_x353.sr_sensortrig[2:0]
(1)testbench353.i_x353.sr_sensortrig[2:0]
(2)testbench353.i_x353.sr_sensortrig[2:0]
testbench353.i_x353.line_run
@1001200
-group_end
@28
testbench353.i_x353.da_hist_next
testbench353.i_x353.i_histogram.frame_start
testbench353.i_x353.i_histogram.frame_started
testbench353.i_x353.i_histogram.hist_bank
testbench353.i_x353.i_histogram.di_vld
@22
testbench353.i_x353.i_histogram.di[15:0]
@28
testbench353.i_x353.i_histogram.window_on
testbench353.i_x353.i_sensortrig.vacts_in
testbench353.i_x353.i_sensortrig.vacts_out
testbench353.i_x353.i_histogram.init_hist
testbench353.i_x353.i_histogram.init_hist_d
testbench353.i_x353.i_histogram.frame_run
@800028
testbench353.i_x353.i_histogram.frame_run_s[2:0]
@28
(0)testbench353.i_x353.i_histogram.frame_run_s[2:0]
(1)testbench353.i_x353.i_histogram.frame_run_s[2:0]
(2)testbench353.i_x353.i_histogram.frame_run_s[2:0]
@1001200
-group_end
@28
testbench353.i_x353.i_histogram.pclk2x
testbench353.i_x353.frame_run
testbench353.i_x353.i_sensortrig.state2
testbench353.i_x353.i_sensortrig.xfer_over
testbench353.i_x353.i_sensortrig.xfer_over_irq
testbench353.i_x353.i_sensortrig.pclk
@1401200
-hist
@c00200
-stuffer_was_ready_early
@28
testbench353.i_x353.i_compressor.i_huffman.en2x
testbench353.i_x353.i_compressor.i_stuffer.rdy_rega
testbench353.i_x353.i_compressor.i_stuffer.rdy_regb
testbench353.i_x353.i_compressor.i_stuffer.rdy_regc
testbench353.i_x353.i_compressor.i_stuffer.rdy_regd
testbench353.i_x353.i_compressor.i_huffman.rdy
testbench353.i_x353.i_compressor.i_huffman.stuffer_was_rdy
testbench353.i_x353.i_compressor.i_huffman.i_huff_fifo.dav
testbench353.i_x353.i_compressor.i_huffman.i_huff_fifo.want_read
testbench353.i_x353.i_compressor.i_huffman.i_huff_fifo.re_r
testbench353.i_x353.i_compressor.i_huffman.tables_re
testbench353.i_x353.i_compressor.i_huffman.i_huff_fifo.load_q
testbench353.i_x353.i_compressor.i_huffman.i_huff_fifo.clk
@1401200
-stuffer_was_ready_early
@c00200
-compressor
@c00022
testbench353.i_x353.i_mcontr.i_descrproc.dest_bond_en[3:0]
testbench353.i_x353.i_mcontr.ch2do[7:0]
@28
(0)testbench353.i_x353.i_mcontr.i_descrproc.dest_bond_en[3:0]
(1)testbench353.i_x353.i_mcontr.i_descrproc.dest_bond_en[3:0]
(2)testbench353.i_x353.i_mcontr.i_descrproc.dest_bond_en[3:0]
(3)testbench353.i_x353.i_mcontr.i_descrproc.dest_bond_en[3:0]
@1401200
-group_end
@c00022
testbench353.i_x353.i_mcontr.i_descrproc.bonded[3:0]
@28
(0)testbench353.i_x353.i_mcontr.i_descrproc.bonded[3:0]
(1)testbench353.i_x353.i_mcontr.i_descrproc.bonded[3:0]
(2)testbench353.i_x353.i_mcontr.i_descrproc.bonded[3:0]
(3)testbench353.i_x353.i_mcontr.i_descrproc.bonded[3:0]
@1401200
-group_end
@28
testbench353.i_x353.i_compressor.bonded
testbench353.i_x353.i_compressor.i_compr_ifc.rcs[1:0]
@22
testbench353.i_x353.i_compressor.i_compr_ifc.ntiles[17:0]
testbench353.i_x353.i_compressor.i_color_proc.bcntr[17:0]
testbench353.i_x353.i_compressor.i_color_proc.nblocks[17:0]
@28
testbench353.i_x353.HACT
testbench353.i_x353.i_compressor.chInitOnehot2
testbench353.i_x353.i_compressor.cmprs_en
testbench353.i_x353.i_compressor.inc_sdrama
testbench353.i_x353.i_compressor.pxrdy
testbench353.i_x353.i_compressor.nxtpage
testbench353.i_x353.i_compressor.eot
testbench353.i_x353.i_compressor.confirmFrame2Compressor
testbench353.i_x353.i_compressor.compressor_starting[1:0]
testbench353.i_x353.i_compressor.compressor_started
testbench353.i_x353.i_compressor.pre_go_single
testbench353.i_x353.i_compressor.go_single
testbench353.i_x353.i_compressor.go_rq
testbench353.i_x353.i_compressor.vacts_long
testbench353.i_x353.i_compressor.vlong
testbench353.i_x353.i_compressor.is_compressing
testbench353.i_x353.i_compressor.is_compressing_d
testbench353.i_x353.i_mcontr.readNextFrame2
testbench353.i_x353.i_compressor.i_color_proc.bcntrIsZero
@22
testbench353.i_x353.i_compressor.i_stuffer.imgsz32[19:0]
testbench353.i_x353.i_compressor.i_stuffer.imgptr[23:0]
@28
testbench353.i_x353.i_compressor.i_stuffer.inc_imgsz32
testbench353.i_x353.i_compressor.i_stuffer.inc_size_count2316
testbench353.i_x353.i_compressor.flush
testbench353.i_x353.i_compressor.done_compress
testbench353.i_x353.i_compressor.clk
testbench353.i_x353.i_compressor.stuffer_done
testbench353.i_x353.i_compressor.i_compr_ifc.cmprs_en_s
@22
testbench353.i_x353.i_compressor.i_compr_ifc.cmprs_en_timeout[6:0]
@28
testbench353.i_x353.i_compressor.i_compr_ifc.cmprs_en_finish
testbench353.i_x353.i_compressor.i_compr_ifc.cmprs_en_long
testbench353.i_x353.i_compressor.i_compr_ifc.force_flush1
testbench353.i_x353.i_compressor.i_compr_ifc.force_flush
testbench353.i_x353.i_compressor.i_stuffer.flushing
testbench353.i_x353.i_compressor.i_stuffer.en
testbench353.i_x353.i_compressor.i_stuffer.flush_end
@22
testbench353.i_x353.i_compressor.i_stuffer.stage2_bits[4:0]
@28
testbench353.i_x353.i_compressor.i_stuffer.rdy
testbench353.i_x353.i_compressor.i_stuffer.stb
testbench353.i_x353.i_compressor.i_stuffer.stage1_full
testbench353.i_x353.i_compressor.stuffer_done
testbench353.i_x353.i_compressor.i_stuffer.size_out[2:0]
testbench353.i_x353.i_compressor.i_stuffer.flush_end
testbench353.i_x353.i_compressor.i_stuffer.start_sizeout
testbench353.i_x353.i_compressor.i_stuffer.done
@22
testbench353.i_x353.i_compressor.i_stuffer.etrax_dma[3:0]
@28
testbench353.i_x353.i_compressor.i_stuffer.time_out
testbench353.i_x353.i_compressor.i_stuffer.trailer
testbench353.i_x353.i_compressor.i_stuffer.start_time_out
testbench353.i_x353.i_compressor.abort_compress
@1401200
-group_end
@c00200
-irq_smart
@28
testbench353.i_x353.i_irq_smart.frame_sync
testbench353.i_x353.i_irq_smart.irq
testbench353.i_x353.i_irq_smart.fifo_empty
testbench353.i_x353.i_irq_smart.is_compressing
testbench353.i_x353.i_irq_smart.compressor_done
testbench353.i_x353.i_irq_smart.is_finishing
testbench353.i_x353.i_irq_smart.delaying_done_irq
testbench353.i_x353.i_irq_smart.fs_postponed
testbench353.i_x353.i_irq_smart.frame_sync
testbench353.i_x353.i_irq_smart.compressor_done
testbench353.i_x353.i_irq_smart.compressor_fifo_done
testbench353.i_x353.i_irq_smart.done_request
testbench353.i_x353.i_irq_smart.rst
testbench353.i_x353.i_irq_smart.sclk
testbench353.i_x353.i_irq_smart.wait_fifo
testbench353.i_x353.i_irq_smart.wait_frame_sync
@1401200
-irq_smart
@c00200
-noMoreData
testbench353.i_x353.i_mcontr.ch2rdy[0]
testbench353.i_x353.i_mcontr.ch2we[0]
testbench353.i_x353.i_mcontr.ch3en[0]
@22
testbench353.i_x353.i_compressor.ntiles[17:0]
testbench353.i_x353.i_compressor.i_color_proc.nblocks[17:0]
testbench353.i_x353.i_compressor.i_color_proc.bcntr[17:0]
testbench353.i_x353.i_mcontr.ch3maddr[6:0]
@28
testbench353.i_x353.i_compressor.i_color_proc.bcntrIsZero
testbench353.i_x353.i_compressor.i_color_proc.eot
testbench353.i_x353.i_mcontr.readNextFrame2
@c00022
testbench353.i_x353.i_mcontr.i_descrproc.nextBlocksEn[3:0]
@28
(0)testbench353.i_x353.i_mcontr.i_descrproc.nextBlocksEn[3:0]
(1)testbench353.i_x353.i_mcontr.i_descrproc.nextBlocksEn[3:0]
(2)testbench353.i_x353.i_mcontr.i_descrproc.nextBlocksEn[3:0]
(3)testbench353.i_x353.i_mcontr.i_descrproc.nextBlocksEn[3:0]
@1401200
-group_end
testbench353.i_x353.i_mcontr.ch3owe[0]
testbench353.i_x353.i_mcontr.ch3page[1:0]
@22
testbench353.i_x353.i_mcontr.i_descrproc.tileX[9:0]
testbench353.i_x353.i_mcontr.i_descrproc.tileY[13:0]
testbench353.SDD[15:0]
@28
testbench353.i_x353.i_compressor.i_color_proc.memWasInit
testbench353.i_x353.i_compressor.go_rq
testbench353.i_x353.i_compressor.not_vlong1_or_not_bonded
testbench353.i_x353.i_compressor.is_compressing
testbench353.i_x353.i_compressor.i_color_proc.eof_rq
testbench353.i_x353.i_compressor.noMoreData
testbench353.i_x353.i_compressor.eot_real
testbench353.i_x353.i_compressor.eot
testbench353.i_x353.i_compressor.go_single
testbench353.i_x353.i_compressor.i_color_proc.go
testbench353.i_x353.i_compressor.i_color_proc.sdram_next
testbench353.i_x353.i_compressor.confirm
testbench353.i_x353.i_compressor.i_color_proc.sdram_rdy
testbench353.i_x353.i_compressor.inc_sdrama
testbench353.i_x353.i_compressor.clk
testbench353.i_x353.cb_break_frames
testbench353.i_x353.i_compressor.i_color_proc.noMoreData
testbench353.i_x353.i_compressor.nextBlocksEn
testbench353.i_x353.i_compressor.nextBlocksEnS[1:0]
testbench353.i_x353.i_compressor.confirm_en
testbench353.i_x353.i_compressor.confirm
testbench353.i_x353.i_compressor.pxrdy
testbench353.i_x353.i_compressor.i_color_proc.tim2next
@1401200
-noMoreData
@c00200
-vacts_filter
@28
testbench353.i_x353.i_sensorpads.i_sensor_phase.reset_fifo_in_cntr
@800022
testbench353.i_sensor12bits.state[3:0]
@28
(0)testbench353.i_sensor12bits.state[3:0]
(1)testbench353.i_sensor12bits.state[3:0]
(2)testbench353.i_sensor12bits.state[3:0]
(3)testbench353.i_sensor12bits.state[3:0]
@1001200
-group_end
@28
testbench353.i_sensor12bits.stopped
testbench353.i_sensor12bits.stoppedd
testbench353.i_sensor12bits.ARO
testbench353.i_x353.VACT
testbench353.i_x353.i_sensortrig.vacts_dly_on
testbench353.i_x353.i_sensortrig.nxt_lf
testbench353.i_x353.i_sensortrig.nxt_line
@22
testbench353.i_x353.i_sensortrig.cmd[3:0]
testbench353.i_x353.i_sensortrig.vact_dly[13:0]
@28
testbench353.i_x353.i_sensortrig.framesync_dly
testbench353.i_x353.i_sensorpads.vacts
testbench353.i_x353.cb_sensor_trigger
testbench353.i_x353.i_sensorpads.i_sensor_phase.en_svact
testbench353.i_x353.i_sensorpads.i_sensor_phase.pre_svact_outfifo
testbench353.i_x353.i_sensorpads.i_sensor_phase.pre_svact
testbench353.i_x353.i_sensorpads.i_sensor_phase.pre_svact_d
testbench353.i_x353.i_sensorpads.i_sensor_phase.svact
@22
testbench353.i_x353.i_camsync.wen[3:0]
@28
testbench353.i_x353.i_camsync.start
testbench353.i_x353.i_camsync.trigger1
testbench353.i_x353.i_camsync.trigger
testbench353.i_x353.i_camsync.input_use_intern
testbench353.i_x353.i_camsync.trigger_condition
@22
testbench353.i_x353.i_camsync.repeat_period[31:0]
testbench353.i_x353.i_camsync.restart_cntr[31:0]
@28
testbench353.i_x353.sensor_trigger
testbench353.i_x353.ARO
testbench353.i_x353.vacts
testbench353.i_x353.vacts_every
testbench353.i_x353.i_sensortrig.vacts_in
testbench353.i_x353.i_sensortrig.pre_vacts_out
testbench353.i_x353.i_sensortrig.pre_vacts_out_d
testbench353.i_x353.i_sensortrig.vacts_dly_on
testbench353.i_x353.i_sensortrig.vacts_out
testbench353.i_x353.vacts_long
testbench353.i_x353.i_sensorpads.i_sensor_phase.en_svact
@22
testbench353.i_x353.i_sensorpads.i_sensor_phase.svact_filter_cntr[7:0]
@28
testbench353.i_x353.i_camsync.outsync
@22
testbench353.i_x353.io_da[11:0]
testbench353.i_x353.io_da_en[11:0]
@800022
testbench353.i_x353.EXT[11:0]
@28
(0)testbench353.i_x353.EXT[11:0]
(1)testbench353.i_x353.EXT[11:0]
(2)testbench353.i_x353.EXT[11:0]
(3)testbench353.i_x353.EXT[11:0]
(4)testbench353.i_x353.EXT[11:0]
(5)testbench353.i_x353.EXT[11:0]
(6)testbench353.i_x353.EXT[11:0]
(7)testbench353.i_x353.EXT[11:0]
(8)testbench353.i_x353.EXT[11:0]
(9)testbench353.i_x353.EXT[11:0]
(10)testbench353.i_x353.EXT[11:0]
(11)testbench353.i_x353.EXT[11:0]
@1001200
-group_end
@1401200
-vacts_filter
@c00200
-compressor-memory
@28
testbench353.BLOCK_HACT
testbench353.i_x353.HACT
testbench353.i_x353.i_compressor.cmprs_start
testbench353.i_x353.vacts
testbench353.i_x353.i_compressor.vacts_long
testbench353.i_x353.i_compressor.not_vlong1_or_not_bonded
testbench353.i_x353.i_compressor.confirmFrame2Compressor
testbench353.i_x353.i_compressor.go_rq
testbench353.i_x353.i_compressor.restart_memory
testbench353.i_x353.i_compressor.noMoreData
testbench353.i_x353.i_compressor.nextBlocksEn
testbench353.i_x353.i_compressor.go_single
testbench353.i_x353.i_compressor.is_compressing
@22
testbench353.i_x353.i_compressor.i_color_proc.bcntr[17:0]
@28
testbench353.i_x353.i_compressor.i_color_proc.bcntrIsZero
testbench353.i_x353.i_compressor.i_color_proc.transfer_ended
testbench353.i_x353.i_compressor.i_stuffer.flush_end
@c00028
testbench353.i_x353.i_compressor.i_stuffer.size_out[2:0]
@28
(0)testbench353.i_x353.i_compressor.i_stuffer.size_out[2:0]
(1)testbench353.i_x353.i_compressor.i_stuffer.size_out[2:0]
(2)testbench353.i_x353.i_compressor.i_stuffer.size_out[2:0]
@1401200
-group_end
@28
testbench353.i_x353.i_compressor.i_stuffer.flush_end_delayed
testbench353.i_x353.i_compressor.i_stuffer.pre_flush_end_delayed
testbench353.i_x353.compressor_done_pulse
testbench353.i_x353.i_compressor.i_stuffer.done
testbench353.i_x353.compressor_started
@22
testbench353.i_x353.debug_mcontr_reset_data[31:0]
testbench353.i_x353.debug_mcontr_count[12:0]
testbench353.i_x353.debug_mcontr_count_start[15:0]
testbench353.i_x353.debug_mcontr_count_end[15:0]
@c00022
testbench353.i_x353.i_mcontr.i_descrproc.restart[3:0]
testbench353.i_x353.i_mcontr.ch3rd[31:0]
testbench353.i_x353.i_mcontr.chInitOnehot[3:0]
@28
(0)testbench353.i_x353.i_mcontr.i_descrproc.restart[3:0]
(1)testbench353.i_x353.i_mcontr.i_descrproc.restart[3:0]
(2)testbench353.i_x353.i_mcontr.i_descrproc.restart[3:0]
(3)testbench353.i_x353.i_mcontr.i_descrproc.restart[3:0]
testbench353.i_x353.i_compressor.i_color_proc.memWasInit
testbench353.i_x353.i_compressor.chInitOnehot2
testbench353.i_x353.cb_reset_mcontr
@1401200
-group_end
@22
testbench353.i_x353.i_cmd_sequencer.frame_no[2:0]
@28
testbench353.i_x353.VACT
testbench353.i_x353.HACT
testbench353.i_x353.i_compressor.eot
testbench353.i_x353.i_compressor.done_compress_pulse
testbench353.i_x353.i_irq_smart.irq
@22
testbench353.i_x353.imgptr[23:0]
testbench353.i_x353.imgptr[23:0]
testbench353.i_x353.i_compressor.ntiles[17:0]
@28
testbench353.i_x353.i_compressor.i_color_proc.eof_rq
testbench353.i_x353.i_mcontr.i_descrproc.clk
testbench353.i_x353.i_mcontr.i_descrproc.last_lines_reg
testbench353.i_x353.i_mcontr.i_descrproc.last_lines_source
testbench353.i_x353.i_mcontr.i_descrproc.stepsIe
testbench353.i_x353.i_mcontr.i_descrproc.stepsEn012
testbench353.i_x353.i_mcontr.i_descrproc.rNum[1:0]
testbench353.i_x353.i_compressor.cmprs_repeat
testbench353.i_x353.i_compressor.i_color_proc.tim2next
testbench353.i_x353.i_compressor.pxrdy
testbench353.i_x353.i_compressor.i_color_proc.tim2next
testbench353.i_x353.i_compressor.done_compress
testbench353.i_x353.i_compressor.done_input
testbench353.i_x353.i_compressor.eot_real
testbench353.i_x353.i_mcontr.chInit[0]
testbench353.i_x353.i_mcontr.chNum[1:0]
@22
testbench353.i_x353.i_mcontr.i_descrproc.tileX[9:0]
testbench353.i_x353.i_mcontr.i_descrproc.tileY[13:0]
@28
testbench353.i_x353.i_mcontr.i_descrproc.restart_en
testbench353.i_x353.i_compressor.i_color_proc.inc_sdrama
testbench353.i_x353.i_compressor.nxtpage
testbench353.i_x353.cb_break_frames
testbench353.i_x353.cb_reset_mcontr
testbench353.i_x353.cb_hact_regen
testbench353.i_x353.cb_use_sensor_clk
@c00022
testbench353.i_x353.chInitOnehot[3:0]
@28
(0)testbench353.i_x353.chInitOnehot[3:0]
(1)testbench353.i_x353.chInitOnehot[3:0]
(2)testbench353.i_x353.chInitOnehot[3:0]
(3)testbench353.i_x353.chInitOnehot[3:0]
@1401200
-group_end
@28
testbench353.i_x353.i_compressor.chInitOnehot2
@c00022
testbench353.i_x353.i_mcontr.chReqInit[3:0]
@28
(0)testbench353.i_x353.i_mcontr.chReqInit[3:0]
(1)testbench353.i_x353.i_mcontr.chReqInit[3:0]
(2)testbench353.i_x353.i_mcontr.chReqInit[3:0]
(3)testbench353.i_x353.i_mcontr.chReqInit[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.rqInitS
testbench353.i_x353.i_mcontr.i_descrproc.chInitNum[1:0]
@22
testbench353.i_x353.i_mcontr.i_descrproc.extRestartRq[3:0]
@28
testbench353.i_x353.i_compressor.restart_memory
@1401200
-group_end
@28
testbench353.i_x353.i_compressor.i_color_proc.clk
@22
testbench353.i_x353.debug_mcontr_count[12:0]
@28
testbench353.i_x353.compressor_started
testbench353.i_x353.compressor_done_input
testbench353.i_x353.sr_ch2rdy
@22
testbench353.i_x353.i_compressor.i_color_proc.seq_cntr[8:0]
@28
testbench353.i_x353.i_mcontr.i_descrproc.setLineNumSource
@22
testbench353.i_x353.i_mcontr.i_descrproc.lineNumSource[13:0]
testbench353.i_x353.i_mcontr.i_descrproc.tileX[9:0]
testbench353.i_x353.i_mcontr.i_descrproc.rnTilesY[13:0]
testbench353.i_x353.i_mcontr.i_descrproc.descr_dyn[21:0]
@28
testbench353.i_x353.i_mcontr.i_descrproc.stepsEn012
testbench353.i_x353.i_mcontr.i_descrproc.srcAtStart
testbench353.i_x353.i_mcontr.i_descrproc.nxtTFw
testbench353.i_x353.i_mcontr.i_descrproc.nxtTFr
testbench353.i_x353.i_mcontr.i_descrproc.nxtTL
@22
testbench353.i_x353.i_mcontr.i_descrproc.tileY[13:0]
@28
testbench353.i_x353.i_mcontr.i_descrproc.setLineNumDest
@22
testbench353.i_x353.i_mcontr.i_descrproc.lineNumDest[13:0]
testbench353.i_x353.i_mcontr.i_descrproc.prevStripSource[13:4]
@28
testbench353.i_x353.i_mcontr.i_descrproc.lastLineDest
@22
testbench353.i_x353.i_mcontr.i_descrproc.descr_stat[17:0]
@28
testbench353.i_x353.i_mcontr.i_descrproc.last_lines_source
testbench353.i_x353.i_mcontr.i_descrproc.notEnoughData
testbench353.i_x353.i_mcontr.i_descrproc.updSuspXfer
testbench353.i_x353.i_mcontr.stch2
@c00028
testbench353.i_x353.i_mcontr.i_descrproc.nxtTF_p[2:0]
@28
(0)testbench353.i_x353.i_mcontr.i_descrproc.nxtTF_p[2:0]
(1)testbench353.i_x353.i_mcontr.i_descrproc.nxtTF_p[2:0]
(2)testbench353.i_x353.i_mcontr.i_descrproc.nxtTF_p[2:0]
@1401200
-group_end
@c00022
testbench353.i_x353.i_mcontr.i_descrproc.stepsEn[3:0]
@28
(0)testbench353.i_x353.i_mcontr.i_descrproc.stepsEn[3:0]
(1)testbench353.i_x353.i_mcontr.i_descrproc.stepsEn[3:0]
(2)testbench353.i_x353.i_mcontr.i_descrproc.stepsEn[3:0]
(3)testbench353.i_x353.i_mcontr.i_descrproc.stepsEn[3:0]
@1401200
-group_end
@28
testbench353.i_x353.i_mcontr.i_descrproc.first_tile
testbench353.i_x353.i_mcontr.i_descrproc.first_tile_dest
@22
testbench353.i_x353.i_mcontr.i_descrproc.descr_dyn[21:0]
testbench353.i_x353.i_mcontr.i_descrproc.tileY[13:0]
@1401200
-compressor-memory
@c00200
-camsync
@28
testbench353.i_x353.i_camsync.start
testbench353.i_x353.i_camsync.start_dly
testbench353.i_x353.i_camsync.dly_cntr_run
testbench353.i_x353.ARO
@22
testbench353.i_x353.psec[31:0]
testbench353.i_x353.pusec[19:0]
testbench353.i_x353.i_camsync.ts_rcv_usec[19:0]
testbench353.i_x353.i_compressor.i_stuffer.usec_r[19:0]
@28
testbench353.i_x353.i_compressor.go_single
testbench353.i_x353.i_compressor.compressor_started
testbench353.i_x353.i_compressor.eot_2x_n
testbench353.i_x353.i_camsync.pclk
testbench353.i_x353.i_camsync.outsync
testbench353.external_sync_line
@c00022
testbench353.i_x353.EXT[11:0]
@28
(0)testbench353.i_x353.EXT[11:0]
(1)testbench353.i_x353.EXT[11:0]
(2)testbench353.i_x353.EXT[11:0]
(3)testbench353.i_x353.EXT[11:0]
(4)testbench353.i_x353.EXT[11:0]
(5)testbench353.i_x353.EXT[11:0]
(6)testbench353.i_x353.EXT[11:0]
(7)testbench353.i_x353.EXT[11:0]
(8)testbench353.i_x353.EXT[11:0]
(9)testbench353.i_x353.EXT[11:0]
(10)testbench353.i_x353.EXT[11:0]
(11)testbench353.i_x353.EXT[11:0]
@1401200
-group_end
@28
testbench353.i_x353.i_camsync.ts_external_pclk
testbench353.i_x353.i_camsync.ts_snd_en
testbench353.i_x353.i_camsync.ts_snap
testbench353.i_x353.i_camsync.input_use_intern
@22
testbench353.i_x353.i_camsync.input_pattern[11:0]
testbench353.i_x353.i_camsync.input_use[11:0]
testbench353.i_x353.i_camsync.repeat_period[31:0]
@28
testbench353.i_x353.i_camsync.pre_start0
testbench353.i_x353.i_camsync.pre_set_bit
testbench353.i_x353.i_camsync.pre_set_period
testbench353.i_x353.i_camsync.start
@22
testbench353.i_x353.i_camsync.bit_length[7:0]
@28
testbench353.i_x353.i_camsync.trigger1
testbench353.i_x353.i_camsync.trigger1_dly16
testbench353.i_x353.i_camsync.dly_cntr_run
@22
testbench353.i_x353.i_camsync.bit_snd_counter[5:0]
@28
testbench353.i_x353.i_camsync.trigger_condition
@22
testbench353.i_x353.i_camsync.trigger_filter_cntr[6:0]
@28
testbench353.i_x353.i_camsync.trigger_condition_filtered
@22
testbench353.i_x353.i_camsync.sr_rcv_first[31:0]
testbench353.i_x353.i_camsync.sr_rcv_second[31:0]
testbench353.i_x353.i_camsync.bit_rcv_duration[7:0]
@28
testbench353.i_x353.i_camsync.rcv_run
testbench353.i_x353.i_camsync.rcv_run_or_deaf
testbench353.i_x353.i_camsync.rcv_done_rq
testbench353.i_x353.i_camsync.rcv_done
testbench353.i_x353.i_camsync.rcv_error
@1401200
-camsync
@28
testbench353.i_x353.i_compressor.i_quantizator.clk
testbench353.i_x353.i_compressor.i_quantizator.sclk
testbench353.i_x353.i_compressor.i_quantizator.ctype
testbench353.i_x353.i_compressor.i_quantizator.ctypei
testbench353.i_x353.i_compressor.i_quantizator.stb
@22
testbench353.i_x353.i_compressor.i_quantizator.start[5:0]
@28
testbench353.i_x353.i_compressor.i_quantizator.start_a
testbench353.i_x353.i_compressor.i_quantizator.dcc_stb
testbench353.i_x353.i_compressor.i_quantizator.start_z
testbench353.i_x353.i_compressor.i_quantizator.start_out
@22
testbench353.i_x353.i_compressor.i_quantizator.block_mem_o[15:0]
@28
testbench353.i_x353.i_compressor.i_quantizator.block_mem_ra[2:0]
testbench353.i_x353.i_compressor.i_quantizator.block_mem_wa[2:0]
testbench353.i_x353.i_compressor.i_quantizator.block_mem_wa_save[2:0]
testbench353.i_x353.i_compressor.i_quantizator.color_first
testbench353.i_x353.i_compressor.i_quantizator.copy_dc_tdo
testbench353.i_x353.i_compressor.i_quantizator.coring_num[2:0]
@22
testbench353.i_x353.i_compressor.i_quantizator.d1[12:0]
testbench353.i_x353.i_compressor.i_quantizator.d2[12:0]
testbench353.i_x353.i_compressor.i_quantizator.d3[12:0]
testbench353.i_x353.i_compressor.i_quantizator.d2_dct[10:0]
testbench353.i_x353.i_compressor.i_quantizator.dc1[8:0]
testbench353.i_x353.i_compressor.i_quantizator.dc[8:0]
testbench353.i_x353.i_compressor.i_quantizator.tba[9:0]
testbench353.i_x353.i_compressor.i_quantizator.tbac[3:0]
testbench353.i_x353.i_compressor.i_quantizator.tdco[3:0]
testbench353.i_x353.i_compressor.i_quantizator.tdo[15:0]
testbench353.i_x353.i_compressor.i_quantizator.tdor[15:0]
testbench353.i_x353.i_compressor.i_quantizator.qmul[27:0]
testbench353.i_x353.i_compressor.i_quantizator.qmulr[20:0]
testbench353.i_x353.i_compressor.i_quantizator.qdo0[12:0]
testbench353.i_x353.i_compressor.i_quantizator.qdo[12:0]
@28
testbench353.i_x353.i_compressor.i_quantizator.zwe
testbench353.i_x353.i_compressor.i_quantizator.coring_range
testbench353.i_x353.i_compressor.i_quantizator.coring_sel[2:0]
testbench353.i_x353.i_compressor.i_quantizator.ctype_prev[1:0]
@22
testbench353.i_x353.i_compressor.i_quantizator.dc_tdo[15:0]
@28
testbench353.i_x353.i_compressor.i_quantizator.dcc_Y
@22
testbench353.i_x353.i_compressor.i_quantizator.dcc_acc[12:0]
testbench353.i_x353.i_compressor.i_quantizator.dcc_data[15:0]
@28
testbench353.i_x353.i_compressor.i_quantizator.dcc_en
testbench353.i_x353.i_compressor.i_quantizator.dcc_first
testbench353.i_x353.i_compressor.i_quantizator.dcc_run
testbench353.i_x353.i_compressor.i_quantizator.dcc_vld
@22
testbench353.i_x353.i_compressor.i_quantizator.dci[8:0]
testbench353.i_x353.i_compressor.i_quantizator.di[12:0]
testbench353.i_x353.i_compressor.i_quantizator.do[12:0]
@28
testbench353.i_x353.i_compressor.i_quantizator.ds
testbench353.i_x353.i_compressor.i_quantizator.dv
testbench353.i_x353.i_compressor.i_quantizator.en
testbench353.i_x353.i_compressor.i_quantizator.first_in
testbench353.i_x353.i_compressor.i_quantizator.first_interm
testbench353.i_x353.i_compressor.i_quantizator.first_out
testbench353.i_x353.i_compressor.i_quantizator.first_stb
@22
testbench353.i_x353.i_compressor.i_quantizator.hfc_acc[12:0]
@28
testbench353.i_x353.i_compressor.i_quantizator.hfc_copy
testbench353.i_x353.i_compressor.i_quantizator.hfc_en
testbench353.i_x353.i_compressor.i_quantizator.hfc_sel[2:0]
@22
testbench353.i_x353.i_compressor.i_quantizator.n000[7:0]
testbench353.i_x353.i_compressor.i_quantizator.n255[7:0]
@28
testbench353.i_x353.i_compressor.i_quantizator.next_dv
@22
testbench353.i_x353.i_compressor.i_quantizator.pre_dc_tdo[15:0]
@28
testbench353.i_x353.i_compressor.i_quantizator.pre_start
testbench353.i_x353.i_compressor.i_quantizator.rpage
testbench353.i_x353.i_compressor.i_quantizator.sel_satnum
@22
testbench353.i_x353.i_compressor.i_quantizator.ta[8:0]
testbench353.i_x353.i_compressor.i_quantizator.tdi[15:0]
@28
testbench353.i_x353.i_compressor.i_quantizator.ts[2:0]
testbench353.i_x353.i_compressor.i_quantizator.tsi[2:0]
testbench353.i_x353.i_compressor.i_quantizator.twce
testbench353.i_x353.i_compressor.i_quantizator.twce_d
testbench353.i_x353.i_compressor.i_quantizator.twqe
testbench353.i_x353.i_compressor.i_quantizator.twqe_d
testbench353.i_x353.i_compressor.i_quantizator.wpage
@22
testbench353.i_x353.i_compressor.i_quantizator.zigzag_q[15:0]
testbench353.i_x353.i_compressor.i_quantizator.zra[5:0]
testbench353.i_x353.i_compressor.i_quantizator.zwa[5:0]
<<<<<<< x353_1.sav
@1401200
-quantizer
@c00200
-IMU
@22
testbench353.i_x353.i_imu_logger.ts_rcv_sec[31:0]
testbench353.i_x353.i_imu_logger.ts_rcv_usec[19:0]
@28
testbench353.i_x353.i_imu_logger.ts_stb
@22
testbench353.i_x353.i_imu_logger.bitHalfPeriod[15:0]
testbench353.i_x353.i_imu_logger.bitHalfPeriod_mclk[15:0]
@28
testbench353.i_x353.i_imu_logger.channel[1:0]
@22
testbench353.i_x353.i_imu_logger.channel_next[3:0]
testbench353.i_x353.i_imu_logger.channel_ready[3:0]
@28
testbench353.i_x353.i_imu_logger.clk
testbench353.i_x353.i_mcontr.chSt1[0]
testbench353.i_x353.i_mcontr.chSt2[0]
testbench353.i_x353.i_mcontr.ch_dlast[0]
testbench353.i_x353.i_mcontr.ch_drun_rd[0]
testbench353.i_x353.i_mcontr.ch_drun_wr[0]
testbench353.i_x353.i_mcontr.ch_prefirstdrun[0]
@22
testbench353.i_x353.i_imu_logger.config_gps[3:0]
testbench353.i_x353.i_imu_logger.config_gps_mclk[3:0]
testbench353.i_x353.i_imu_logger.config_gps_pre[3:0]
testbench353.i_x353.i_mcontr.chnAckn[3:0]
testbench353.i_x353.i_mcontr.chnReqInit[3:0]
testbench353.i_x353.i_mcontr.chnReq[4:0]
@28
testbench353.i_x353.i_imu_logger.config_imu[1:0]
testbench353.i_x353.i_imu_logger.config_imu_mclk[1:0]
testbench353.i_x353.i_imu_logger.config_imu_pre[1:0]
testbench353.i_x353.i_mcontr.clk0[0]
@22
testbench353.i_x353.i_imu_logger.config_msg[4:0]
testbench353.i_x353.i_imu_logger.config_msg_mclk[4:0]
testbench353.i_x353.i_imu_logger.config_msg_pre[4:0]
testbench353.i_x353.i_mcontr.confirmRead0[3:0]
testbench353.i_x353.i_mcontr.confirmRead[3:0]
testbench353.i_x353.i_mcontr.curChanLate[3:0]
testbench353.i_x353.i_mcontr.curChan[4:0]
testbench353.i_x353.i_mcontr.di[31:0]
@28
testbench353.i_x353.i_imu_logger.config_rst
testbench353.i_x353.i_imu_logger.config_rst_mclk
testbench353.i_x353.i_imu_logger.config_rst_pre
testbench353.i_x353.i_imu_logger.config_syn
testbench353.i_x353.i_imu_logger.config_syn_mclk
testbench353.i_x353.i_imu_logger.config_syn_pre
testbench353.i_x353.i_mcontr.disSDRAM[0]
testbench353.i_x353.i_mcontr.dmask[1:0]
@22
testbench353.i_x353.i_imu_logger.ctrl_addr[6:0]
testbench353.i_x353.i_imu_logger.data_out[15:0]
testbench353.i_x353.i_mcontr.dnch[3:0]
testbench353.i_x353.i_mcontr.do[31:0]
@28
testbench353.i_x353.i_imu_logger.data_out_stb
testbench353.i_x353.i_mcontr.dqs_re[0]
testbench353.i_x353.i_mcontr.dscs[0]
@22
testbench353.i_x353.i_imu_logger.dbg_cntr[7:0]
testbench353.i_x353.i_imu_logger.debug_state[31:0]
testbench353.i_x353.i_imu_logger.di[15:0]
testbench353.i_x353.i_imu_logger.di_d[15:0]
testbench353.i_x353.i_mcontr.dsdo[31:0]
@28
testbench353.i_x353.i_imu_logger.enable_gps
testbench353.i_x353.i_imu_logger.enable_msg
testbench353.i_x353.i_imu_logger.enable_syn
testbench353.i_x353.i_imu_logger.enable_timestamps
testbench353.i_x353.i_mcontr.dsel[1:0]
testbench353.i_x353.i_mcontr.enRefresh[0]
testbench353.i_x353.i_mcontr.enSDRAM[0]
@22
testbench353.i_x353.i_imu_logger.ext_di[11:0]
testbench353.i_x353.i_imu_logger.ext_do[11:0]
testbench353.i_x353.i_imu_logger.ext_en[11:0]
testbench353.i_x353.i_mcontr.enXfer[3:0]
@28
testbench353.i_x353.i_imu_logger.ext_ts_stb[1:0]
testbench353.i_x353.i_mcontr.ench2[0]
@22
testbench353.i_x353.i_imu_logger.extts_data[15:0]
testbench353.i_x353.i_mcontr.ia[3:0]
@28
testbench353.i_x353.i_imu_logger.gps_pulse1sec
testbench353.i_x353.i_imu_logger.gps_pulse1sec_d[2:0]
testbench353.i_x353.i_imu_logger.gps_pulse1sec_denoise[1:0]
testbench353.i_x353.i_mcontr.init_ch3[0]
@22
testbench353.i_x353.i_imu_logger.gps_pulse1sec_denoise_count[7:0]
testbench353.i_x353.i_mcontr.mancmd[17:0]
@28
testbench353.i_x353.i_imu_logger.gps_pulse1sec_single
testbench353.i_x353.i_imu_logger.gps_ts_stb
testbench353.i_x353.i_mcontr.menrw[0]
testbench353.i_x353.i_mcontr.mode[0]
testbench353.i_x353.i_mcontr.mwnr[0]
testbench353.i_x353.i_mcontr.nBuf[1:0]
@22
testbench353.i_x353.i_imu_logger.imu_data[15:0]
testbench353.i_x353.i_mcontr.nextBlocksEn[3:0]
testbench353.i_x353.i_mcontr.nextFrame[3:0]
@28
testbench353.i_x353.i_imu_logger.message_trig
testbench353.i_x353.i_imu_logger.miso
testbench353.i_x353.i_imu_logger.mosi
testbench353.i_x353.i_mcontr.nextReq[0]
testbench353.i_x353.i_mcontr.next_ch3[0]
@22
testbench353.i_x353.i_imu_logger.msg_data[15:0]
testbench353.i_x353.i_imu_logger.mux_data_final[15:0]
testbench353.i_x353.i_imu_logger.mux_data_source[15:0]
testbench353.i_x353.i_mcontr.param[5:0]
@28
testbench353.i_x353.i_imu_logger.mux_data_valid
testbench353.i_x353.i_imu_logger.mux_rdy_source
testbench353.i_x353.i_mcontr.predqt[0]
testbench353.i_x353.i_mcontr.rdy[0]
testbench353.i_x353.i_mcontr.readNextFrame0[0]
testbench353.i_x353.i_mcontr.readNextFrame1[0]
testbench353.i_x353.i_mcontr.readNextFrame2[0]
testbench353.i_x353.i_mcontr.readNextFrame3[0]
@22
testbench353.i_x353.i_imu_logger.nmea_data[15:0]
testbench353.i_x353.i_mcontr.readNextFrameS[3:0]
testbench353.i_x353.i_mcontr.readNextFrame_rst[3:0]
@28
testbench353.i_x353.i_imu_logger.nmea_sent_start
testbench353.i_x353.i_imu_logger.pre_message_trig
testbench353.i_x353.i_imu_logger.rs232_start
testbench353.i_x353.i_imu_logger.rs232_wait_pause
testbench353.i_x353.i_mcontr.refrStart[0]
@22
testbench353.i_x353.i_imu_logger.sample_counter[23:0]
testbench353.i_x353.i_mcontr.restart[3:0]
@28
testbench353.i_x353.i_imu_logger.scl
testbench353.i_x353.i_imu_logger.scl_en
testbench353.i_x353.i_imu_logger.sda
testbench353.i_x353.i_imu_logger.sda_en
testbench353.i_x353.i_mcontr.restart_en[0]
testbench353.i_x353.i_mcontr.rovr[0]
@22
testbench353.i_x353.i_imu_logger.sec[31:0]
testbench353.i_x353.i_mcontr.sda[12:0]
@28
testbench353.i_x353.i_imu_logger.ser_di
testbench353.i_x353.i_imu_logger.ser_do
testbench353.i_x353.i_imu_logger.ser_do_stb
testbench353.i_x353.i_mcontr.sdba[1:0]
testbench353.i_x353.i_mcontr.sdcas[0]
@22
testbench353.i_x353.i_imu_logger.timestamp_ackn[3:0]
testbench353.i_x353.i_imu_logger.timestamp_request[3:0]
testbench353.i_x353.i_imu_logger.timestamp_request_long[3:0]
testbench353.i_x353.i_mcontr.sddi[31:0]
testbench353.i_x353.i_mcontr.sddo[31:0]
testbench353.i_x353.i_mcontr.sddo_reg[31:0]
@28
testbench353.i_x353.i_imu_logger.timestamp_sel[1:0]
testbench353.i_x353.i_mcontr.sdras[0]
testbench353.i_x353.i_mcontr.sdwe[0]
@22
testbench353.i_x353.i_imu_logger.timestamps_rdata[15:0]
testbench353.i_x353.i_mcontr.sfa[24:8]
testbench353.i_x353.i_mcontr.startAddr[24:3]
@28
testbench353.i_x353.i_imu_logger.ts_en
@22
testbench353.i_x353.i_imu_logger.ts_rcv_sec[31:0]
testbench353.i_x353.i_imu_logger.ts_rcv_usec[19:0]
@28
testbench353.i_x353.i_imu_logger.ts_stb
testbench353.i_x353.i_imu_logger.ts_stb_rq
@22
testbench353.i_x353.i_imu_logger.usec[19:0]
@28
testbench353.i_x353.i_imu_logger.wa
testbench353.i_x353.i_imu_logger.we
testbench353.i_x353.i_imu_logger.we_bitHalfPeriod
testbench353.i_x353.i_imu_logger.we_bit_duration
testbench353.i_x353.i_imu_logger.we_config
testbench353.i_x353.i_imu_logger.we_config_gps
testbench353.i_x353.i_imu_logger.we_config_imu
testbench353.i_x353.i_imu_logger.we_config_msg
testbench353.i_x353.i_imu_logger.we_config_syn
testbench353.i_x353.i_imu_logger.we_d
testbench353.i_x353.i_imu_logger.we_gps
testbench353.i_x353.i_imu_logger.we_imu
testbench353.i_x353.i_imu_logger.we_message
testbench353.i_x353.i_imu_logger.we_period
testbench353.i_x353.i_imu_logger.xclk
testbench353.i_x353.i_mcontr.stch0[0]
testbench353.i_x353.i_mcontr.stch1[0]
testbench353.i_x353.i_mcontr.stch2[0]
testbench353.i_x353.i_mcontr.trist[0]
testbench353.i_x353.i_mcontr.wrempty[0]
@1401200
-IMU
-mcontr
@c00200
-imu_spi
@28
testbench353.IMU_103695REVA
@22
testbench353.i_x353.i_imu_logger.config_debug[3:0]
@800022
testbench353.i_x353.i_imu_logger.i_imu_spi.config_debug[3:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.config_debug[3:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.config_debug[3:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.config_debug[3:0]
(3)testbench353.i_x353.i_imu_logger.i_imu_spi.config_debug[3:0]
@1001200
-group_end
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.config_single_wire
testbench353.IMU_MOSI_REVA
testbench353.IMU_NMOSI
testbench353.IMU_SCLK
testbench353.IMU_MOSI
testbench353.IMU_CS
testbench353.IMU_ACTIVE
testbench353.IMU_SCLK_OUT
testbench353.IMU_MOSI_OUT
testbench353.IMU_MISO
@22
testbench353.IMU_LOOPBACK[15:0]
@c00022
testbench353.IMU_TAPS[5:1]
@28
(0)testbench353.IMU_TAPS[5:1]
(1)testbench353.IMU_TAPS[5:1]
(2)testbench353.IMU_TAPS[5:1]
(3)testbench353.IMU_TAPS[5:1]
(4)testbench353.IMU_TAPS[5:1]
@1401200
-group_end
@c00028
testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_stb[2:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_stb[2:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_stb[2:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_stb[2:0]
@1401200
-group_end
@800028
testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_r[1:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_r[1:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_r[1:0]
@1001200
-group_end
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire
testbench353.i_x353.i_imu_logger.i_imu_spi.seq_state[1:0]
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.seq_counter[9:0]
@800022
testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
(3)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
@1001200
-group_end
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.stall
testbench353.i_x353.i_imu_logger.i_imu_spi.mosi
testbench353.i_x353.i_imu_logger.i_imu_spi.scl
testbench353.i_x353.i_imu_logger.i_imu_spi.sda
testbench353.IMU_DATA_READY
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_ready_reset
@c00022
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
(3)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
(4)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
(5)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
@1401200
-group_end
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.skip_stall
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.stall_cntr[7:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.stall
testbench353.i_x353.i_imu_logger.i_imu_spi.set_stall
testbench353.i_x353.i_imu_logger.i_imu_spi.set_mosi_spi
testbench353.i_x353.i_imu_logger.i_imu_spi.shift_mosi
@c00022
testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(3)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(4)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(5)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(6)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(7)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(8)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(9)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(10)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(11)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(12)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(13)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(14)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(15)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
@1401200
-group_end
@28
testbench353.IMU_MOSI
testbench353.IMU_SCL
testbench353.IMU_CS
testbench353.IMU_MISO
testbench353.i_x353.i_imu_logger.i_imu_spi.stall
testbench353.i_x353.i_imu_logger.i_imu_spi.miso
testbench353.i_x353.i_imu_logger.i_imu_spi.shift_mosi
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.miso_reg[15:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.shift_miso
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_in_buf[15:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_wr_buf
testbench353.i_x353.i_imu_logger.i_imu_spi.last_buf_wr
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.bit_duration[7:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.bit_duration_cntr[7:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.bit_duration_mclk[7:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.bit_duration_zero
testbench353.i_x353.i_imu_logger.i_imu_spi.clk_div[1:0]
@c00022
testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
(3)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
@1401200
-group_end
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.config_debug[3:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.config_late_clk
testbench353.i_x353.i_imu_logger.i_imu_spi.config_long_sda_en
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.di[15:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.di_d[15:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.en
testbench353.i_x353.i_imu_logger.i_imu_spi.end_prepare
testbench353.i_x353.i_imu_logger.i_imu_spi.end_spi
testbench353.i_x353.i_imu_logger.i_imu_spi.first_prepare
testbench353.i_x353.i_imu_logger.i_imu_spi.first_prepare_d[1:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_enabled[1:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_enabled_mclk
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_in_buf[15:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_in_word[4:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_wr_buf
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.miso_reg[15:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_reg_number[6:1]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_run[1:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_run_confirmed
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_run_mclk
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_start
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_start_first
@c00028
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_start_grant[1:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_start_grant[1:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_start_grant[1:0]
@1401200
-group_end
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_start_mclk
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_wr_buf
testbench353.i_x353.i_imu_logger.i_imu_spi.last_bit
testbench353.i_x353.i_imu_logger.i_imu_spi.last_bit_ext
testbench353.i_x353.i_imu_logger.i_imu_spi.last_buf_wr
testbench353.i_x353.i_imu_logger.i_imu_spi.miso
testbench353.i_x353.i_imu_logger.i_imu_spi.mosi
testbench353.i_x353.i_imu_logger.i_imu_spi.set_mosi_spi
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.period[31:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.period_counter[31:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.pre_imu_wr_buf
testbench353.i_x353.i_imu_logger.i_imu_spi.pre_seq_counter_zero
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.raddr[4:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.rd_stb
@c00022
testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(3)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(4)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(5)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(6)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(7)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(8)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(9)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(10)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(11)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(12)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(13)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(14)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(15)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
@1401200
-group_end
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.rdy
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.reg_seq_number[4:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.scl
testbench353.i_x353.i_imu_logger.i_imu_spi.scl_d
testbench353.i_x353.i_imu_logger.i_imu_spi.scl_en
testbench353.i_x353.i_imu_logger.i_imu_spi.sclk
testbench353.i_x353.i_imu_logger.i_imu_spi.sda
testbench353.i_x353.i_imu_logger.i_imu_spi.sda_d
testbench353.i_x353.i_imu_logger.i_imu_spi.sda_en
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.seq_counter[9:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.seq_counter_zero
testbench353.i_x353.i_imu_logger.i_imu_spi.seq_state[1:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.set_mosi_prepare
testbench353.i_x353.i_imu_logger.i_imu_spi.set_mosi_spi
testbench353.i_x353.i_imu_logger.i_imu_spi.set_stall
testbench353.i_x353.i_imu_logger.i_imu_spi.shift_miso
testbench353.i_x353.i_imu_logger.i_imu_spi.skip_stall
testbench353.i_x353.i_imu_logger.i_imu_spi.stall
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.stall_cntr[7:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.stall_dur[7:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.stall_dur_mclk[7:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.ts
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.wa[4:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.we_div
testbench353.i_x353.i_imu_logger.i_imu_spi.we_period
testbench353.i_x353.i_imu_logger.i_imu_spi.we_ra
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.we_timer[4:1]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.xclk
@1401200
-imu_spi
-chnrq0
@28
testbench353.i_x353.i_mcontr.i_channelRequest0.ackn[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.cntrsInit[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.cntrsValid[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.current_wnr[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.done[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.eclk[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.ecnt[2:0]
testbench353.i_x353.i_mcontr.i_channelRequest0.enXfer[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.en_done[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.iclk[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.icnt[2:0]
testbench353.i_x353.i_mcontr.i_channelRequest0.init[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.next_ecnt[2:0]
testbench353.i_x353.i_mcontr.i_channelRequest0.next_icnt[2:0]
testbench353.i_x353.i_mcontr.i_channelRequest0.next_rcnt[2:0]
testbench353.i_x353.i_mcontr.i_channelRequest0.rcnt[2:0]
testbench353.i_x353.i_mcontr.i_channelRequest0.rdy[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.rdy_async[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.ready_off[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.rqInit[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.rq[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.rst[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.start[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.wnr[0]
testbench353.i_x353.i_mcontr.i_channelRequest0.wrempty[0]
@1401200
-chnrq0
@c00200
-rs232_rcv
@22
testbench353.i_x353.i_imu_logger.i_rs232_rcv.bitHalfPeriod[15:0]
testbench353.i_x353.i_imu_logger.i_rs232_rcv.bit_cntr[4:0]
testbench353.i_x353.i_imu_logger.i_rs232_rcv.bit_dur_cntr[15:0]
@28
testbench353.i_x353.i_imu_logger.i_rs232_rcv.bit_half_end
@22
testbench353.i_x353.i_imu_logger.i_rs232_rcv.debug0[4:0]
testbench353.i_x353.i_imu_logger.i_rs232_rcv.debug[4:0]
@28
testbench353.i_x353.i_imu_logger.i_rs232_rcv.error
testbench353.i_x353.i_imu_logger.i_rs232_rcv.last_half_bit
testbench353.i_x353.i_imu_logger.i_rs232_rcv.receiving_byte
testbench353.i_x353.i_imu_logger.i_rs232_rcv.reset_bit_duration
testbench353.i_x353.i_imu_logger.i_rs232_rcv.reset_wait_pause
testbench353.i_x353.i_imu_logger.i_rs232_rcv.restart[1:0]
testbench353.i_x353.i_imu_logger.i_rs232_rcv.sample_bit
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_di
@22
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_di_d[4:0]
@28
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_do
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_do_stb
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_filt_di
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_filt_di_d
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_rst
testbench353.i_x353.i_imu_logger.i_rs232_rcv.shift_en
testbench353.i_x353.i_imu_logger.i_rs232_rcv.start
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ts_stb
testbench353.i_x353.i_imu_logger.i_rs232_rcv.wait_just_pause
testbench353.i_x353.i_imu_logger.i_rs232_rcv.wait_pause
testbench353.i_x353.i_imu_logger.i_rs232_rcv.wait_start
testbench353.i_x353.i_imu_logger.i_rs232_rcv.wstart
testbench353.i_x353.i_imu_logger.i_rs232_rcv.xclk
@1401200
-rs232_rcv
=======
@1401200
-quantizer
-chnrq3
@28
testbench353.i_x353.i_mcontr.i_channelRequest3.ackn[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.cntrsInit[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.cntrsValid[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.current_wnr[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.done[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.eclk[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.ecnt[2:0]
testbench353.i_x353.i_mcontr.i_channelRequest3.enXfer[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.en_done[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.iclk[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.icnt[2:0]
testbench353.i_x353.i_mcontr.i_channelRequest3.init[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.next_ecnt[2:0]
testbench353.i_x353.i_mcontr.i_channelRequest3.next_icnt[2:0]
testbench353.i_x353.i_mcontr.i_channelRequest3.next_rcnt[2:0]
testbench353.i_x353.i_mcontr.i_channelRequest3.rcnt[2:0]
testbench353.i_x353.i_mcontr.i_channelRequest3.rdy[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.rdy_async[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.ready_off[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.rqInit[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.rq[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.rst[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.start[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.wnr[0]
testbench353.i_x353.i_mcontr.i_channelRequest3.wrempty[0]
@1401200
-chnrq3
@c00200
-IMU
@22
testbench353.i_x353.i_imu_logger.ts_rcv_sec[31:0]
testbench353.i_x353.i_imu_logger.ts_rcv_usec[19:0]
-descrproc
@28
testbench353.i_x353.i_imu_logger.ts_stb
testbench353.i_x353.i_mcontr.i_descrproc.WnR[0]
@22
testbench353.i_x353.i_imu_logger.bitHalfPeriod[15:0]
testbench353.i_x353.i_imu_logger.bitHalfPeriod_mclk[15:0]
@28
testbench353.i_x353.i_imu_logger.channel[1:0]
@22
testbench353.i_x353.i_imu_logger.channel_next[3:0]
testbench353.i_x353.i_imu_logger.channel_ready[3:0]
@28
testbench353.i_x353.i_imu_logger.clk
@22
testbench353.i_x353.i_imu_logger.config_gps[3:0]
testbench353.i_x353.i_imu_logger.config_gps_mclk[3:0]
testbench353.i_x353.i_imu_logger.config_gps_pre[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.am[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.as[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.bonded[3:0]
@28
testbench353.i_x353.i_imu_logger.config_imu[1:0]
testbench353.i_x353.i_imu_logger.config_imu_mclk[1:0]
testbench353.i_x353.i_imu_logger.config_imu_pre[1:0]
testbench353.i_x353.i_mcontr.i_descrproc.chInitNum[1:0]
testbench353.i_x353.i_mcontr.i_descrproc.chInit[0]
@22
testbench353.i_x353.i_imu_logger.config_msg[4:0]
testbench353.i_x353.i_imu_logger.config_msg_mclk[4:0]
testbench353.i_x353.i_imu_logger.config_msg_pre[4:0]
testbench353.i_x353.i_mcontr.i_descrproc.chNumOneHot[3:0]
@28
testbench353.i_x353.i_imu_logger.config_rst
testbench353.i_x353.i_imu_logger.config_rst_mclk
testbench353.i_x353.i_imu_logger.config_rst_pre
testbench353.i_x353.i_imu_logger.config_syn
testbench353.i_x353.i_imu_logger.config_syn_mclk
testbench353.i_x353.i_imu_logger.config_syn_pre
testbench353.i_x353.i_mcontr.i_descrproc.chNum[1:0]
@22
testbench353.i_x353.i_imu_logger.ctrl_addr[6:0]
testbench353.i_x353.i_imu_logger.data_out[15:0]
testbench353.i_x353.i_mcontr.i_descrproc.chReqInit[3:0]
@28
testbench353.i_x353.i_imu_logger.data_out_stb
testbench353.i_x353.i_mcontr.i_descrproc.chStIn[0]
testbench353.i_x353.i_mcontr.i_descrproc.chStOut[0]
@22
testbench353.i_x353.i_imu_logger.dbg_cntr[7:0]
testbench353.i_x353.i_imu_logger.debug_state[31:0]
testbench353.i_x353.i_imu_logger.di[15:0]
testbench353.i_x353.i_imu_logger.di_d[15:0]
testbench353.i_x353.i_mcontr.i_descrproc.channelIsRead[3:0]
@28
testbench353.i_x353.i_imu_logger.enable_gps
testbench353.i_x353.i_imu_logger.enable_msg
testbench353.i_x353.i_imu_logger.enable_syn
testbench353.i_x353.i_imu_logger.enable_timestamps
testbench353.i_x353.i_mcontr.i_descrproc.clk[0]
@22
testbench353.i_x353.i_imu_logger.ext_di[11:0]
testbench353.i_x353.i_imu_logger.ext_do[11:0]
testbench353.i_x353.i_imu_logger.ext_en[11:0]
testbench353.i_x353.i_mcontr.i_descrproc.confirmRead[3:0]
@28
testbench353.i_x353.i_imu_logger.ext_ts_stb[1:0]
testbench353.i_x353.i_mcontr.i_descrproc.depend[0]
@22
testbench353.i_x353.i_imu_logger.extts_data[15:0]
testbench353.i_x353.i_mcontr.i_descrproc.descr_dyn[21:0]
testbench353.i_x353.i_mcontr.i_descrproc.descr_stat[17:0]
testbench353.i_x353.i_mcontr.i_descrproc.descr_stat_inc[4:0]
@28
testbench353.i_x353.i_imu_logger.gps_pulse1sec
testbench353.i_x353.i_imu_logger.gps_pulse1sec_d[2:0]
testbench353.i_x353.i_imu_logger.gps_pulse1sec_denoise[1:0]
testbench353.i_x353.i_mcontr.i_descrproc.destBond[0]
testbench353.i_x353.i_mcontr.i_descrproc.destChNum[1:0]
@22
testbench353.i_x353.i_imu_logger.gps_pulse1sec_denoise_count[7:0]
testbench353.i_x353.i_mcontr.i_descrproc.dest_bond_en[3:0]
@28
testbench353.i_x353.i_imu_logger.gps_pulse1sec_single
testbench353.i_x353.i_imu_logger.gps_ts_stb
testbench353.i_x353.i_mcontr.i_descrproc.dest_mode[0]
testbench353.i_x353.i_mcontr.i_descrproc.enRefresh0[0]
testbench353.i_x353.i_mcontr.i_descrproc.enRefresh[0]
@22
testbench353.i_x353.i_imu_logger.imu_data[15:0]
testbench353.i_x353.i_mcontr.i_descrproc.enRestart[3:0]
@28
testbench353.i_x353.i_imu_logger.message_trig
testbench353.i_x353.i_imu_logger.miso
testbench353.i_x353.i_imu_logger.mosi
testbench353.i_x353.i_mcontr.i_descrproc.enSDRAM0[0]
testbench353.i_x353.i_mcontr.i_descrproc.enSDRAM[0]
@22
testbench353.i_x353.i_imu_logger.msg_data[15:0]
testbench353.i_x353.i_imu_logger.mux_data_final[15:0]
testbench353.i_x353.i_imu_logger.mux_data_source[15:0]
testbench353.i_x353.i_mcontr.i_descrproc.enXfer0[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.enXfer[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.extRestartRq0[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.extRestartRq1[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.extRestartRq2[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.extRestartRq[3:0]
@28
testbench353.i_x353.i_imu_logger.mux_data_valid
testbench353.i_x353.i_imu_logger.mux_rdy_source
testbench353.i_x353.i_mcontr.i_descrproc.first_tile[0]
testbench353.i_x353.i_mcontr.i_descrproc.first_tile_dest[0]
testbench353.i_x353.i_mcontr.i_descrproc.first_tile_reg[0]
@22
testbench353.i_x353.i_imu_logger.nmea_data[15:0]
testbench353.i_x353.i_mcontr.i_descrproc.ia[3:0]
@28
testbench353.i_x353.i_imu_logger.nmea_sent_start
testbench353.i_x353.i_imu_logger.pre_message_trig
testbench353.i_x353.i_imu_logger.rs232_start
testbench353.i_x353.i_imu_logger.rs232_wait_pause
testbench353.i_x353.i_mcontr.i_descrproc.initChannelAsRead[0]
testbench353.i_x353.i_mcontr.i_descrproc.lastLineDest[0]
testbench353.i_x353.i_mcontr.i_descrproc.last_line[0]
testbench353.i_x353.i_mcontr.i_descrproc.last_lines[0]
testbench353.i_x353.i_mcontr.i_descrproc.last_lines_reg[0]
testbench353.i_x353.i_mcontr.i_descrproc.last_lines_source[0]
@22
testbench353.i_x353.i_imu_logger.sample_counter[23:0]
testbench353.i_x353.i_mcontr.i_descrproc.linAddr[16:0]
testbench353.i_x353.i_mcontr.i_descrproc.linAddr_input[18:0]
testbench353.i_x353.i_mcontr.i_descrproc.lineNumDest[13:0]
testbench353.i_x353.i_mcontr.i_descrproc.lineNumSource[13:0]
@28
testbench353.i_x353.i_imu_logger.scl
testbench353.i_x353.i_imu_logger.scl_en
testbench353.i_x353.i_imu_logger.sda
testbench353.i_x353.i_imu_logger.sda_en
testbench353.i_x353.i_mcontr.i_descrproc.mancmdRqS[2:0]
@22
testbench353.i_x353.i_imu_logger.sec[31:0]
testbench353.i_x353.i_mcontr.i_descrproc.mancmd[17:0]
@28
testbench353.i_x353.i_imu_logger.ser_di
testbench353.i_x353.i_imu_logger.ser_do
testbench353.i_x353.i_imu_logger.ser_do_stb
testbench353.i_x353.i_mcontr.i_descrproc.mcs[0]
@22
testbench353.i_x353.i_imu_logger.timestamp_ackn[3:0]
testbench353.i_x353.i_imu_logger.timestamp_request[3:0]
testbench353.i_x353.i_imu_logger.timestamp_request_long[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.mdi[17:0]
testbench353.i_x353.i_mcontr.i_descrproc.mdo1[17:0]
testbench353.i_x353.i_mcontr.i_descrproc.mdo2[21:0]
testbench353.i_x353.i_mcontr.i_descrproc.mdo[31:0]
@28
testbench353.i_x353.i_imu_logger.timestamp_sel[1:0]
testbench353.i_x353.i_mcontr.i_descrproc.mode[0]
testbench353.i_x353.i_mcontr.i_descrproc.nBuf[1:0]
@22
testbench353.i_x353.i_imu_logger.timestamps_rdata[15:0]
testbench353.i_x353.i_mcontr.i_descrproc.nextBlocksEn[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.nextFrame[3:0]
@28
testbench353.i_x353.i_imu_logger.ts_en
testbench353.i_x353.i_mcontr.i_descrproc.notEnoughData[0]
testbench353.i_x353.i_mcontr.i_descrproc.nxtTF_p[2:0]
testbench353.i_x353.i_mcontr.i_descrproc.nxtTFr[0]
testbench353.i_x353.i_mcontr.i_descrproc.nxtTFw[0]
testbench353.i_x353.i_mcontr.i_descrproc.nxtTL[0]
testbench353.i_x353.i_mcontr.i_descrproc.nxtTLw[0]
testbench353.i_x353.i_mcontr.i_descrproc.nxtTf_d[0]
@22
testbench353.i_x353.i_imu_logger.ts_rcv_sec[31:0]
testbench353.i_x353.i_imu_logger.ts_rcv_usec[19:0]
testbench353.i_x353.i_mcontr.i_descrproc.padlen[4:0]
@28
testbench353.i_x353.i_imu_logger.ts_stb
testbench353.i_x353.i_imu_logger.ts_stb_rq
testbench353.i_x353.i_mcontr.i_descrproc.pre_rovr[0]
@22
testbench353.i_x353.i_imu_logger.usec[19:0]
@28
testbench353.i_x353.i_imu_logger.wa
testbench353.i_x353.i_imu_logger.we
testbench353.i_x353.i_imu_logger.we_bitHalfPeriod
testbench353.i_x353.i_imu_logger.we_bit_duration
testbench353.i_x353.i_imu_logger.we_config
testbench353.i_x353.i_imu_logger.we_config_gps
testbench353.i_x353.i_imu_logger.we_config_imu
testbench353.i_x353.i_imu_logger.we_config_msg
testbench353.i_x353.i_imu_logger.we_config_syn
testbench353.i_x353.i_imu_logger.we_d
testbench353.i_x353.i_imu_logger.we_gps
testbench353.i_x353.i_imu_logger.we_imu
testbench353.i_x353.i_imu_logger.we_message
testbench353.i_x353.i_imu_logger.we_period
testbench353.i_x353.i_imu_logger.xclk
@1401200
-IMU
@800200
-imu_spi
@28
testbench353.IMU_103695REVA
@22
testbench353.i_x353.i_imu_logger.config_debug[3:0]
@800022
testbench353.i_x353.i_imu_logger.i_imu_spi.config_debug[3:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.config_debug[3:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.config_debug[3:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.config_debug[3:0]
(3)testbench353.i_x353.i_imu_logger.i_imu_spi.config_debug[3:0]
@1001200
-group_end
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.config_single_wire
testbench353.IMU_MOSI_REVA
testbench353.IMU_NMOSI
testbench353.IMU_SCLK
testbench353.IMU_MOSI
testbench353.IMU_CS
testbench353.IMU_ACTIVE
testbench353.IMU_SCLK_OUT
testbench353.IMU_MOSI_OUT
testbench353.IMU_MISO
@23
testbench353.IMU_LOOPBACK[15:0]
@c00022
testbench353.IMU_TAPS[5:1]
@28
(0)testbench353.IMU_TAPS[5:1]
(1)testbench353.IMU_TAPS[5:1]
(2)testbench353.IMU_TAPS[5:1]
(3)testbench353.IMU_TAPS[5:1]
(4)testbench353.IMU_TAPS[5:1]
@1401200
-group_end
@c00028
testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_stb[2:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_stb[2:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_stb[2:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_stb[2:0]
@1401200
-group_end
@800028
testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_r[1:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_r[1:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire_r[1:0]
@1001200
-group_end
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.sngl_wire
testbench353.i_x353.i_imu_logger.i_imu_spi.seq_state[1:0]
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.seq_counter[9:0]
@800022
testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
(3)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
@1001200
-group_end
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.stall
testbench353.i_x353.i_imu_logger.i_imu_spi.mosi
testbench353.i_x353.i_imu_logger.i_imu_spi.scl
testbench353.i_x353.i_imu_logger.i_imu_spi.sda
testbench353.IMU_DATA_READY
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_ready_reset
@c00022
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
(3)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
(4)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
(5)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_data_ready[5:0]
@1401200
-group_end
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.skip_stall
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.stall_cntr[7:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.stall
testbench353.i_x353.i_imu_logger.i_imu_spi.set_stall
testbench353.i_x353.i_imu_logger.i_imu_spi.set_mosi_spi
testbench353.i_x353.i_imu_logger.i_imu_spi.shift_mosi
@c00022
testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(3)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(4)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(5)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(6)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(7)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(8)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(9)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(10)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(11)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(12)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(13)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(14)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
(15)testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
@1401200
-group_end
@28
testbench353.IMU_MOSI
testbench353.IMU_SCL
testbench353.IMU_CS
testbench353.IMU_MISO
testbench353.i_x353.i_imu_logger.i_imu_spi.stall
testbench353.i_x353.i_imu_logger.i_imu_spi.miso
testbench353.i_x353.i_imu_logger.i_imu_spi.shift_mosi
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.miso_reg[15:0]
testbench353.i_x353.i_mcontr.i_descrproc.prevStripSource[13:4]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.shift_miso
testbench353.i_x353.i_mcontr.i_descrproc.rNum[1:0]
testbench353.i_x353.i_mcontr.i_descrproc.resetDestBond[0]
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_in_buf[15:0]
testbench353.i_x353.i_mcontr.i_descrproc.restart[3:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_wr_buf
testbench353.i_x353.i_imu_logger.i_imu_spi.last_buf_wr
testbench353.i_x353.i_mcontr.i_descrproc.restart_en[0]
testbench353.i_x353.i_mcontr.i_descrproc.restart_en_sync[0]
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.bit_duration[7:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.bit_duration_cntr[7:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.bit_duration_mclk[7:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.bit_duration_zero
testbench353.i_x353.i_imu_logger.i_imu_spi.clk_div[1:0]
@c00022
testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.rnTilesY[13:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
(3)testbench353.i_x353.i_imu_logger.i_imu_spi.clk_en[3:0]
@1401200
-group_end
testbench353.i_x353.i_mcontr.i_descrproc.rovr[0]
testbench353.i_x353.i_mcontr.i_descrproc.rqInitS[0]
testbench353.i_x353.i_mcontr.i_descrproc.rqInit[0]
testbench353.i_x353.i_mcontr.i_descrproc.rst[0]
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.config_debug[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.sa[24:3]
testbench353.i_x353.i_mcontr.i_descrproc.seq_par[5:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.config_late_clk
testbench353.i_x353.i_imu_logger.i_imu_spi.config_long_sda_en
testbench353.i_x353.i_mcontr.i_descrproc.setDestBond[0]
testbench353.i_x353.i_mcontr.i_descrproc.setLineNumDest[0]
testbench353.i_x353.i_mcontr.i_descrproc.setLineNumSource[0]
testbench353.i_x353.i_mcontr.i_descrproc.setSourceBond[0]
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.di[15:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.di_d[15:0]
testbench353.i_x353.i_mcontr.i_descrproc.sfa[24:8]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.en
testbench353.i_x353.i_imu_logger.i_imu_spi.end_prepare
testbench353.i_x353.i_imu_logger.i_imu_spi.end_spi
testbench353.i_x353.i_imu_logger.i_imu_spi.first_prepare
testbench353.i_x353.i_imu_logger.i_imu_spi.first_prepare_d[1:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_enabled[1:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_enabled_mclk
testbench353.i_x353.i_mcontr.i_descrproc.srcAtStart[0]
testbench353.i_x353.i_mcontr.i_descrproc.stepsDwe[0]
testbench353.i_x353.i_mcontr.i_descrproc.stepsEn012[0]
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_in_buf[15:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_in_word[4:0]
testbench353.i_x353.i_mcontr.i_descrproc.stepsEn[3:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_wr_buf
testbench353.i_x353.i_mcontr.i_descrproc.stepsI[0]
testbench353.i_x353.i_mcontr.i_descrproc.stepsIe[0]
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.miso_reg[15:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_reg_number[6:1]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_run[1:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_run_confirmed
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_run_mclk
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_start
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_start_first
@c00028
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_start_grant[1:0]
testbench353.i_x353.i_mcontr.i_descrproc.steps[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.suspXfer[3:0]
testbench353.i_x353.i_mcontr.i_descrproc.tileX[9:0]
testbench353.i_x353.i_mcontr.i_descrproc.tileY[13:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_start_grant[1:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.imu_start_grant[1:0]
testbench353.i_x353.i_mcontr.i_descrproc.updSuspXfer[0]
@1401200
-group_end
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_start_mclk
testbench353.i_x353.i_imu_logger.i_imu_spi.imu_wr_buf
testbench353.i_x353.i_imu_logger.i_imu_spi.last_bit
testbench353.i_x353.i_imu_logger.i_imu_spi.last_bit_ext
testbench353.i_x353.i_imu_logger.i_imu_spi.last_buf_wr
testbench353.i_x353.i_imu_logger.i_imu_spi.miso
testbench353.i_x353.i_imu_logger.i_imu_spi.mosi
testbench353.i_x353.i_imu_logger.i_imu_spi.set_mosi_spi
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.mosi_reg[15:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.period[31:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.period_counter[31:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.pre_imu_wr_buf
testbench353.i_x353.i_imu_logger.i_imu_spi.pre_seq_counter_zero
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.raddr[4:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.rd_stb
@c00022
testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
@28
(0)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(1)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(2)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(3)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(4)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(5)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(6)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(7)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(8)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(9)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(10)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(11)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(12)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(13)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(14)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
(15)testbench353.i_x353.i_imu_logger.i_imu_spi.rdata[15:0]
@1401200
-group_end
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.rdy
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.reg_seq_number[4:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.scl
testbench353.i_x353.i_imu_logger.i_imu_spi.scl_d
testbench353.i_x353.i_imu_logger.i_imu_spi.scl_en
testbench353.i_x353.i_imu_logger.i_imu_spi.sclk
testbench353.i_x353.i_imu_logger.i_imu_spi.sda
testbench353.i_x353.i_imu_logger.i_imu_spi.sda_d
testbench353.i_x353.i_imu_logger.i_imu_spi.sda_en
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.seq_counter[9:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.seq_counter_zero
testbench353.i_x353.i_imu_logger.i_imu_spi.seq_state[1:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.set_mosi_prepare
testbench353.i_x353.i_imu_logger.i_imu_spi.set_mosi_spi
testbench353.i_x353.i_imu_logger.i_imu_spi.set_stall
testbench353.i_x353.i_imu_logger.i_imu_spi.shift_miso
testbench353.i_x353.i_imu_logger.i_imu_spi.skip_stall
testbench353.i_x353.i_imu_logger.i_imu_spi.stall
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.stall_cntr[7:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.stall_dur[7:0]
testbench353.i_x353.i_imu_logger.i_imu_spi.stall_dur_mclk[7:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.ts
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.wa[4:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.we_div
testbench353.i_x353.i_imu_logger.i_imu_spi.we_period
testbench353.i_x353.i_imu_logger.i_imu_spi.we_ra
@22
testbench353.i_x353.i_imu_logger.i_imu_spi.we_timer[4:1]
-descrproc
@200
-
@800200
-debug_memcntr
@28
testbench353.i_x353.i_mcontr.i_sdseq.clk0[0]
testbench353.i_x353.i_mcontr.i_sdseq.rst[0]
testbench353.i_x353.i_mcontr.i_sdseq.prerw[0]
@22
testbench353.i_x353.i_mcontr.i_sdseq.mancmd[17:0]
testbench353.i_x353.i_mcontr.i_sdseq.prea[12:0]
@28
testbench353.i_x353.i_mcontr.i_sdseq.first[0]
@22
testbench353.i_x353.i_mcontr.i_sdseq.fullAddr[24:3]
@28
testbench353.i_x353.i_mcontr.i_sdseq.pre1act_m1d2[0]
testbench353.i_x353.i_mcontr.i_sdseq.preact[0]
testbench353.i_x353.i_mcontr.i_sdseq.continue_m1[0]
testbench353.i_x353.i_mcontr.i_sdseq.precontinue_m1[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre2prech_m[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre6prech_m[0]
testbench353.i_x353.i_mcontr.i_sdseq.drun_wr[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre7prech_m[1:0]
testbench353.i_x353.i_mcontr.i_sdseq.prenext_m1s[0]
testbench353.i_x353.i_mcontr.i_sdseq.prenext_m1d[0]
@22
testbench353.i_x353.i_mcontr.i_sdseq.left[4:0]
@28
testbench353.i_x353.i_mcontr.i_sdseq.mode[0]
testbench353.i_x353.i_mcontr.i_sdseq.prenext_m0[0]
testbench353.i_x353.i_mcontr.i_sdseq.prenext_m0r[0]
testbench353.i_x353.i_mcontr.i_sdseq.start_m0r[0]
testbench353.i_x353.i_mcontr.i_sdseq.prenext_m0w1[0]
testbench353.i_x353.i_mcontr.i_sdseq.start_m0w[0]
@23
testbench353.i_x353.i_mcontr.i_sdseq.param[5:0]
@28
testbench353.i_x353.i_imu_logger.i_imu_spi.xclk
testbench353.i_x353.i_mcontr.i_sdseq.continue_m0[0]
@1000200
-imu_spi
@c00200
-rs232_rcv
@22
testbench353.i_x353.i_imu_logger.i_rs232_rcv.bitHalfPeriod[15:0]
testbench353.i_x353.i_imu_logger.i_rs232_rcv.bit_cntr[4:0]
testbench353.i_x353.i_imu_logger.i_rs232_rcv.bit_dur_cntr[15:0]
@28
testbench353.i_x353.i_imu_logger.i_rs232_rcv.bit_half_end
@22
testbench353.i_x353.i_imu_logger.i_rs232_rcv.debug0[4:0]
testbench353.i_x353.i_imu_logger.i_rs232_rcv.debug[4:0]
@28
testbench353.i_x353.i_imu_logger.i_rs232_rcv.error
testbench353.i_x353.i_imu_logger.i_rs232_rcv.last_half_bit
testbench353.i_x353.i_imu_logger.i_rs232_rcv.receiving_byte
testbench353.i_x353.i_imu_logger.i_rs232_rcv.reset_bit_duration
testbench353.i_x353.i_imu_logger.i_rs232_rcv.reset_wait_pause
testbench353.i_x353.i_imu_logger.i_rs232_rcv.restart[1:0]
testbench353.i_x353.i_imu_logger.i_rs232_rcv.sample_bit
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_di
@22
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_di_d[4:0]
@28
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_do
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_do_stb
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_filt_di
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_filt_di_d
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ser_rst
testbench353.i_x353.i_imu_logger.i_rs232_rcv.shift_en
testbench353.i_x353.i_imu_logger.i_rs232_rcv.start
testbench353.i_x353.i_imu_logger.i_rs232_rcv.ts_stb
testbench353.i_x353.i_imu_logger.i_rs232_rcv.wait_just_pause
testbench353.i_x353.i_imu_logger.i_rs232_rcv.wait_pause
testbench353.i_x353.i_imu_logger.i_rs232_rcv.wait_start
testbench353.i_x353.i_imu_logger.i_rs232_rcv.wstart
testbench353.i_x353.i_imu_logger.i_rs232_rcv.xclk
@1401200
-rs232_rcv
>>>>>>> 1.14
-debug_memcntr
@200
-
@800200
-sdseq
@28
testbench353.i_x353.i_mcontr.i_sdseq.chsel[1:0]
testbench353.i_x353.i_mcontr.i_sdseq.clk0[0]
testbench353.i_x353.i_mcontr.i_sdseq.continue_m0[0]
testbench353.i_x353.i_mcontr.i_sdseq.continue_m1[0]
testbench353.i_x353.i_mcontr.i_sdseq.decLeft[0]
testbench353.i_x353.i_mcontr.i_sdseq.dlast[0]
testbench353.i_x353.i_mcontr.i_sdseq.dmask[1:0]
testbench353.i_x353.i_mcontr.i_sdseq.dqs_re[0]
testbench353.i_x353.i_mcontr.i_sdseq.drun_rd[0]
testbench353.i_x353.i_mcontr.i_sdseq.drun_wr[0]
testbench353.i_x353.i_mcontr.i_sdseq.dsel[1:0]
testbench353.i_x353.i_mcontr.i_sdseq.first[0]
@22
testbench353.i_x353.i_mcontr.i_sdseq.fullAddr[24:3]
testbench353.i_x353.i_mcontr.i_sdseq.left[4:0]
testbench353.i_x353.i_mcontr.i_sdseq.mancmd[17:0]
@28
testbench353.i_x353.i_mcontr.i_sdseq.mode[0]
testbench353.i_x353.i_mcontr.i_sdseq.mode_r[0]
@22
testbench353.i_x353.i_mcontr.i_sdseq.nextAddr[24:3]
testbench353.i_x353.i_mcontr.i_sdseq.nextPageAddr[24:10]
@28
testbench353.i_x353.i_mcontr.i_sdseq.next[0]
@22
testbench353.i_x353.i_mcontr.i_sdseq.param[5:0]
@28
testbench353.i_x353.i_mcontr.i_sdseq.possible_dual[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre1act_m1d2[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre2act_m1d2[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre2firstdrun_rd[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre2prech_m1d1[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre2prech_m[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre2read[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre2read_next8[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre2refr[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre2trist[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre2write[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre2write_next8[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre4drun_rd[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre4drun_rd_abort[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre6prech_m[0]
testbench353.i_x353.i_mcontr.i_sdseq.pre7prech_m[1:0]
testbench353.i_x353.i_mcontr.i_sdseq.pre_next_old[0]
@22
testbench353.i_x353.i_mcontr.i_sdseq.prea[12:0]
@28
testbench353.i_x353.i_mcontr.i_sdseq.preact[0]
testbench353.i_x353.i_mcontr.i_sdseq.preb[1:0]
testbench353.i_x353.i_mcontr.i_sdseq.precmd[2:0]
testbench353.i_x353.i_mcontr.i_sdseq.precontinue_m1[0]
testbench353.i_x353.i_mcontr.i_sdseq.predlast_rd[0]
testbench353.i_x353.i_mcontr.i_sdseq.predlast_wr[0]
testbench353.i_x353.i_mcontr.i_sdseq.predmask[0]
testbench353.i_x353.i_mcontr.i_sdseq.predqs_re[0]
testbench353.i_x353.i_mcontr.i_sdseq.predqt[0]
testbench353.i_x353.i_mcontr.i_sdseq.predrun_rd[0]
testbench353.i_x353.i_mcontr.i_sdseq.predrun_wr[0]
testbench353.i_x353.i_mcontr.i_sdseq.predrun_wr_abort[0]
testbench353.i_x353.i_mcontr.i_sdseq.prefirst[0]
testbench353.i_x353.i_mcontr.i_sdseq.prefirstdrun[0]
testbench353.i_x353.i_mcontr.i_sdseq.prenext_m0[0]
testbench353.i_x353.i_mcontr.i_sdseq.prenext_m0r[0]
testbench353.i_x353.i_mcontr.i_sdseq.prenext_m0w1[0]
testbench353.i_x353.i_mcontr.i_sdseq.prenext_m1d[0]
testbench353.i_x353.i_mcontr.i_sdseq.prenext_m1s[0]
testbench353.i_x353.i_mcontr.i_sdseq.prenext_refr[0]
testbench353.i_x353.i_mcontr.i_sdseq.prenext_wr[0]
testbench353.i_x353.i_mcontr.i_sdseq.preprech[0]
testbench353.i_x353.i_mcontr.i_sdseq.preread[0]
testbench353.i_x353.i_mcontr.i_sdseq.prerefr[0]
testbench353.i_x353.i_mcontr.i_sdseq.prerw[0]
testbench353.i_x353.i_mcontr.i_sdseq.prewrite[0]
testbench353.i_x353.i_mcontr.i_sdseq.refr[0]
testbench353.i_x353.i_mcontr.i_sdseq.repeat_r[0]
testbench353.i_x353.i_mcontr.i_sdseq.repeat_r_end[0]
testbench353.i_x353.i_mcontr.i_sdseq.repeat_w[0]
testbench353.i_x353.i_mcontr.i_sdseq.rollover[0]
testbench353.i_x353.i_mcontr.i_sdseq.rovr[0]
testbench353.i_x353.i_mcontr.i_sdseq.rst[0]
@22
testbench353.i_x353.i_mcontr.i_sdseq.sa[24:3]
@28
testbench353.i_x353.i_mcontr.i_sdseq.setNextAddr[0]
@22
testbench353.i_x353.i_mcontr.i_sdseq.sfa[24:8]
@28
testbench353.i_x353.i_mcontr.i_sdseq.start_m0r[0]
testbench353.i_x353.i_mcontr.i_sdseq.start_m0w[0]
testbench353.i_x353.i_mcontr.i_sdseq.start_m1[0]
testbench353.i_x353.i_mcontr.i_sdseq.startf_m1[0]
testbench353.i_x353.i_mcontr.i_sdseq.wnr[0]
testbench353.i_x353.i_mcontr.i_sdseq.xfer[0]
@1000200
-sdseq
[pattern_trace] 1
[pattern_trace] 0
......@@ -27,9 +27,11 @@
`define TEST_BAD_FRAME //abbreviate one frame
`define TEST_IMU
///AF2015 `define TEST_IMU
module testbench353();
reg [639:0] TEST_TITLE; //SuppressThisWarning Veditor Simulator wave
parameter SYNC_BIT_LENGTH=8-1; /// 7 pixel clock pulses
parameter FPGA_XTRA_CYCLES= 1500; // 1072+;
parameter HISTOGRAM_LEFT= 0; //2; // left
......@@ -40,7 +42,8 @@ module testbench353();
parameter CLK1_PER = 10.4; //96MHz
parameter CLK3_PER = 83.33; //12MHz
parameter CPU_PER=10.4;
`ifdef IVERILOG
`ifdef IVERILOG
`define SIMULATION 1
initial $display("IVERILOG is defined");
`include "IVERILOG_INCLUDE.v"
`else
......@@ -64,7 +67,7 @@ module testbench353();
parameter BLANK_ROWS_BEFORE=1; //8; ///2+2 - a little faster than compressor
parameter BLANK_ROWS_AFTER= 1; //8;
parameter TRIG_LINES= 8;
parameter VBLANK= 2; /// 2 lines
parameter VBLANK= 2; /// 2 lines //SuppressThisWarning Veditor UNUSED
parameter CYCLES_PER_PIXEL= 3; /// 2 for JP4, 3 for JPEG
`ifdef PF
......@@ -78,9 +81,9 @@ module testbench353();
`endif
parameter VIRTUAL_WIDTH= FULL_WIDTH+HBLANK;
parameter VIRTUAL_HEIGHT= FULL_HEIGHT+BLANK_ROWS_BEFORE+BLANK_ROWS_AFTER;
parameter VIRTUAL_HEIGHT= FULL_HEIGHT+BLANK_ROWS_BEFORE+BLANK_ROWS_AFTER; //SuppressThisWarning Veditor UNUSED
parameter TRIG_INTERFRAME=100; /// extra 100 clock cycles between frames
parameter TRIG_INTERFRAME=100; /// extra 100 clock cycles between frames //SuppressThisWarning Veditor UNUSED
// parameter TRIG_OUT_DATA= 'h800000; // external cable
parameter TRIG_OUT_DATA= 'h80000; // internal cable
parameter TRIG_EXTERNAL_INPUT= 'h20000; // internal cable, low level on EXT[8]
......@@ -113,43 +116,43 @@ module testbench353();
parameter X313_WA_DCR0_TRIGDIS= 'h100000;
parameter X313_WA_DCR0_ENDFRAMESEN= 'h600000;
parameter X313_WA_DCR0_ENDFRAMESDIS= 'h400000;
parameter X313_WA_DCR0_ENDFRAMESDIS= 'h400000; //SuppressThisWarning Veditor UNUSED
parameter X353_WA_DCR0_RESET_MCONTREN= 'h60; // 1 - enable reset memory controllers (channles 0,1,2) at each frame
parameter X353_WA_DCR0_RESET_MCONTRDIS= 'h40; // 0 - disable reset memory controllers (channles 0,1,2) at each frame
parameter X353_WA_DCR0_RESET_MCONTRDIS= 'h40; // 0 - disable reset memory controllers (channles 0,1,2) at each frame //SuppressThisWarning Veditor UNUSED
parameter X313_WA_IOPINS= 'h70; // bits [31:24] - enable channels (channel 0 -software, enabled at FPGA init)
parameter X313_WA_IOPINS_EN_TRIG_OUT= 'h0c000000;
parameter X313_WA_IOPINS_DIS_TRIG_OUT='h08000000;
parameter X313_WA_IOPINS_EN_IMU_OUT= 'hc0000000;
parameter X313_WA_IOPINS_DIS_IMU_OUT='h80000000;
parameter X313_WA_IOPINS_EN_TRIG_OUT= 'h0c000000;
parameter X313_WA_IOPINS_DIS_TRIG_OUT='h08000000; //SuppressThisWarning Veditor UNUSED
parameter X313_WA_IMU_DATA= 'h7e;
parameter X313_WA_IMU_CTRL= 'h7f;
parameter X313_RA_IMU_DATA= 'h7e; // read fifo word, advance pointer (32 reads w/o ready check)
parameter X313_RA_IMU_STATUS= 'h7f; // LSB==ready
parameter IMU_PERIOD= 'h800; // normal period
parameter IMU_AUTO_PERIOD= 'hffff0000; // period defined by IMU ready
parameter IMU_BIT_DURATION= 'h3; // actual F(scl) will be F(xclk)/2/(IMU_BIT_DURATION+1)
parameter IMU_READY_PERIOD=100000; //100usec
parameter IMU_NREADY_DURATION=10000; //10usec
`ifdef TEST_IMU
parameter X313_WA_IOPINS_EN_IMU_OUT= 'hc0000000;
parameter X313_WA_IOPINS_DIS_IMU_OUT='h80000000; //SuppressThisWarning Veditor UNUSED
parameter X313_WA_IMU_CTRL= 'h7f;
parameter X313_WA_IMU_DATA= 'h7e;
parameter X313_RA_IMU_DATA= 'h7e; // read fifo word, advance pointer (32 reads w/o ready check)
parameter X313_RA_IMU_STATUS= 'h7f; // LSB==ready
parameter IMU_PERIOD= 'h800; // normal period
parameter IMU_AUTO_PERIOD= 'hffff0000; // period defined by IMU ready
parameter IMU_BIT_DURATION= 'h3; // actual F(scl) will be F(xclk)/2/(IMU_BIT_DURATION+1)
parameter IMU_GPS_BIT_PERIOD='h20; // serial communication duration of a bit (in system clocks)
parameter IMU_READY_PERIOD=100000; //100usec
parameter IMU_NREADY_DURATION=10000; //10usec
parameter IMU_GPS_BIT_PERIOD='h20; // serial communication duration of a bit (in system clocks)
// use start of trigger as a timestamp (in async mode to prevent timestamp jitter)
// parameter X313_WA_DCR1_EARLYTRIGEN='hc; //OBSOLETE!
// parameter X313_WA_DCR1_EARLYTRIGDIS='h8;
`endif
parameter X313_WA_DCR1_EXTERNALTSEN='hc;
parameter X313_WA_DCR1_EXTERNALTSDIS='h8;
parameter X313_WA_DCR1_EXTERNALTSDIS='h8; //SuppressThisWarning Veditor UNUSED
parameter X313_WA_DCR1_OUTPUTTSEN= 'h300000;
parameter X313_WA_DCR1_OUTPUTTSDIS='h200000;
parameter X313_WA_DCR1_OUTPUTTSDIS='h200000; //SuppressThisWarning Veditor UNUSED
......@@ -224,87 +227,34 @@ module testbench353();
// parameter CLK1_PER = 10.4; //96MHz
// parameter CLK3_PER = 83.33; //12MHz
// parameter CPU_PER=10.4;
parameter DMA_BURST=8;
reg TEST_CPU_WR_OK;
reg TEST_CPU_RD_OK;
reg SERIAL_BIT = 1'b1;
reg GPS1SEC = 1'b0;
reg ODOMETER_PULSE= 1'b0;
integer SERIAL_DATA_FD;
reg IMU_DATA_READY;
parameter DMA_BURST=8; //SuppressThisWarning Veditor UNUSED
///AF: reg TEST_CPU_WR_OK;
///AF: reg TEST_CPU_RD_OK;
reg SERIAL_BIT = 1'b1; // SuppressThisWarning Veditor UNUSED - simulator test WAVE
reg GPS1SEC = 1'b0; // SuppressThisWarning Veditor UNUSED - simulator test WAVE
reg ODOMETER_PULSE= 1'b0;// SuppressThisWarning Veditor UNUSED - simulator test WAVE
integer SERIAL_DATA_FD; // SuppressThisWarning Veditor UNUSED - simulator test WAVE
reg IMU_DATA_READY; // SuppressThisWarning Veditor UNUSED - simulator test WAVE
/*
parameter IMU_READY_PERIOD=100000; //100usec
parameter IMU_NREADY_DURATION=10000; //10usec
*/
`ifdef TEST_IMU
//wire [11:0] EXT; // bidirectional
wire IMU_SCL=EXT[0];
wire IMU_SDA=EXT[1];
wire IMU_MOSI=EXT[2];
wire IMU_MISO=EXT[3];
reg IMU_EN;
wire IMU_ACTIVE;
wire IMU_NMOSI=!IMU_MOSI;
wire [5:1] IMU_TAPS;
reg IMU_LATE_ACKN;
reg IMU_SCLK;
reg IMU_MOSI_REVA;
reg IMU_103695REVA;
wire IMU_MOSI_OUT;
wire IMU_SCLK_OUT;
assign IMU_MOSI_OUT=IMU_103695REVA?IMU_MOSI_REVA:IMU_MOSI;
assign IMU_SCLK_OUT=IMU_103695REVA?(IMU_SCLK):IMU_SCL;
always @ (posedge IMU_SDA) begin
IMU_EN<=IMU_MOSI;
end
wire IMU_CS=IMU_103695REVA?!IMU_ACTIVE:!(IMU_EN &&IMU_SDA);
reg IMU_MOSI_D;
always @ (posedge IMU_SCLK_OUT) begin
// IMU_MOSI_D<=IMU_MOSI;
IMU_MOSI_D<=IMU_MOSI_OUT;
end
reg [15:0] IMU_LOOPBACK;
always @ (negedge IMU_SCLK_OUT) begin
if (!IMU_CS) IMU_LOOPBACK[15:0]<={IMU_LOOPBACK[14:0],IMU_MOSI_D};
end
assign EXT[3]=IMU_CS?IMU_DATA_READY:IMU_LOOPBACK[15];
PULLUP i_IMU_SDA (.O(IMU_SDA));
PULLUP i_IMU_SCL (.O(IMU_SCL));
initial begin
SERIAL_DATA_FD=$fopen("gps_data.dat","r");
end
always begin
#(IMU_READY_PERIOD-IMU_NREADY_DURATION) IMU_DATA_READY=1'b0;
#(IMU_NREADY_DURATION) IMU_DATA_READY=1'b1;
end
assign EXT[4]=SERIAL_BIT;
assign EXT[5]=GPS1SEC;
assign EXT[6]=ODOMETER_PULSE;
oneshot i_oneshot (.trigger(IMU_NMOSI),
.out(IMU_ACTIVE));
dly5taps i_dly5taps (.dly_in(IMU_NMOSI),
.dly_out(IMU_TAPS[5:1]));
always @ (negedge IMU_ACTIVE or posedge IMU_TAPS[5]) if (!IMU_ACTIVE) IMU_LATE_ACKN<= 1'b0; else IMU_LATE_ACKN<= 1'b1;
always @ (negedge IMU_LATE_ACKN or posedge IMU_TAPS[4]) if (!IMU_LATE_ACKN) IMU_SCLK<= 1'b1; else IMU_SCLK<= ~IMU_SCLK;
always @ (negedge IMU_SCLK) IMU_MOSI_REVA<= IMU_NMOSI;
wire [11:0] EXT; // bidirectional
`ifdef TEST_IMU
`include "imu_sim_init_include.vh"
`endif
// Inputs
wire [11:0] PXD;
wire BPF;
wire HACT;
wire VACT;
wire VACT1CYCLE; //SuppressThisWarning Veditor UNUSED
reg TTRIG;
reg CLK3;
reg CLK2;
reg CLK2; //SuppressThisWarning Veditor UNUSED
reg CLK1;
reg CLK0;
// reg SDCLK_DLL;
......@@ -320,20 +270,20 @@ reg IMU_DATA_READY;
reg [31:0] CPU_DO;
reg CPU_OE; // enable data from CPU to D[31:0]
reg [31:0] CPU_DI;
reg [31:0] DMA_DI;
reg [31:0] DMA_DI_1;
reg [31:0] DMA_CNTR;
reg [31:0] DMA_CNTR_1;
reg [31:0] DMA_DI; //SuppressThisWarning Veditor UNUSED
reg [31:0] DMA_DI_1; //SuppressThisWarning Veditor UNUSED
///AF: reg [31:0] DMA_CNTR;
///AF: reg [31:0] DMA_CNTR_1;
reg [11:0] SDRAM_MODE; // shadow register for SDRAM controller modes
// Outputs
wire DCLK;
wire MRST;
wire ARO;
wire ARST;
wire CNVSYNC;
wire CNVCLK;
wire XRST;
wire AUXCLK;
///AF: wire CNVSYNC;
///AF: wire CNVCLK;
///AF: wire XRST;
///AF: wire AUXCLK;
wire [14:0] SDA;
wire SDCLK, SDNCLK;
// wire SDCKE;
......@@ -353,11 +303,11 @@ reg IMU_DATA_READY;
// Bidirs
wire SCL0;
wire SCL1;
///AF: wire SCL1;
wire SDA0;
wire SDA1;
wire EXPS;
wire TRIG;
///AF: wire SDA1;
///AF: wire EXPS;
wire TRIG; //SuppressThisWarning Veditor UNUSED
wire [15:0] SDD;
wire [31:0] D;
wire LDQS;
......@@ -379,10 +329,10 @@ parameter BUSOP_IO_RD1= 7;
reg [7:0] BUS; // Vector of currently active bus operations
reg CPU_IO; // CPU IO in progress, may not start IO/DMA
reg CPU_IO; // CPU IO in progress, may not start IO/DMA //SuppressThisWarning Veditor UNUSED
// integer LOCK;
reg [10:0] LOCK_ADDR; // LSB - address, 3 MSBs: 0 - read, 1 - write, 2 - DMA0, 3 - DMA1, 4 - INTA
reg [31:0] LOCK_DATA; // Data wants to write
///AF: reg [10:0] LOCK_ADDR; // LSB - address, 3 MSBs: 0 - read, 1 - write, 2 - DMA0, 3 - DMA1, 4 - INTA
///AF: reg [31:0] LOCK_DATA; // Data wants to write
// reg DMA_EN;
// reg DMA_EN_1;
assign D[31:0]=CPU_OE? CPU_DO[31:0]: 32'bz;
......@@ -394,25 +344,26 @@ parameter BUSOP_IO_RD1= 7;
integer histogram_total;
reg [9:0] histogram_count;
reg [23:0] IMG_POINTER;
reg [23:0] IMG_POINTER; //SuppressThisWarning Veditor UNUSED
reg [1:0] FOCUS_MODE;
reg BLOCK_HACT=0;
assign TRIG=TTRIG;
reg [2:0] I2C_FRAME; // frame number modulo 8 as seen in i2c_writeonly
reg [2:0] I2C_FRAME; // frame number modulo 8 as seen in i2c_writeonly //SuppressThisWarning Veditor UNUSED
// ************************* Instantiate the X353 ****************************
wire [11:0] EXT; // bidirectional
assign SYSTEM_A[12:0]={5'b0,A[7:0]}; // will make it tri-state when testing bus acquisition
wire SENSPGM,DUMMYVFEF,ALWAYS0;
wire SDCLKE;
wire [1:0] BA; // don't need now
wire SYS_SDWE, SYS_SDCAS, SYS_SDRAS, SYS_SDCLKI, SYS_SDCLK, SYS_BUSEN, BG, BRIN, BROUT;
wire [1:0] BA; // don't need now //SuppressThisWarning Veditor UNUSED
wire SYS_SDWE, SYS_SDCAS, SYS_SDRAS, SYS_SDCLK, SYS_BUSEN, BG, BROUT; //SuppressThisWarning Veditor UNUSED
wire SYS_SDCLKI = 1'bx; // not tested
wire BRIN = 1'bx; // not tested
/// connect external sync
assign EXT[8]=EXT[9];
wire external_sync_line=~EXT[9];
wire external_sync_line=~EXT[9]; //SuppressThisWarning Veditor UNUSED
x353 i_x353 (
.PXD(PXD[11:2]),
.DCLK(DCLK),
......@@ -481,7 +432,7 @@ x353 i_x353 (
// Instance of Micron MT48LC8M16LFFF8
// cheating - no such actual signal :-(
reg SDCKE;
reg SDCKE; //SuppressThisWarning Veditor UNUSED
initial begin
SDCKE=0;
#1000;
......@@ -520,7 +471,9 @@ sensor12bits i_sensor12bits(.MCLK(DCLK), // Master clock
.DCLK(BPF), // Data output clock
.BPF(), // Black Pixel Flag
.HACT(HACT), // Horizontal Active
.VACT(VACT)
.VACT(VACT),
.VACT1(VACT1CYCLE) // output
);// Vertical Active
// testing end of SDRAM page - process 17 tiles starting at the 3-rd 128-words ina 512 words page
......@@ -561,13 +514,13 @@ defparam i_sensor12bits.trigdly = TRIG_LINES; // delay between trigger input a
initial begin
// $dumpfile("x353.lxt");
$dumpfile(lxtname);
$dumpvars(0,testbench353);
$dumpvars(0,testbench353); //testbench353 cannot be resolved to a signal or parameter //SuppressThisWarning Veditor
TTRIG = 1;
CLK3 = 0;
CLK2 = 0;
CLK1 = 0;
CLK0 = 0;
A = 8'bx;
A = 13'bx;
WE = 1'b1;
OE = 1'b1;
CE = 1'b1;
......@@ -586,7 +539,10 @@ defparam i_sensor12bits.trigdly = TRIG_LINES; // delay between trigger input a
BUS_EN[7:0] =8'h0;
BUS_RQ[7:0] =8'h0;
FOCUS_MODE = 2'h0;
`ifdef TEST_IMU
IMU_103695REVA = 1'b0;
`endif
`ifdef LATE_DMA
`else
dma_en(0,1);
......@@ -594,373 +550,17 @@ defparam i_sensor12bits.trigdly = TRIG_LINES; // delay between trigger input a
// temporary for IMU testing
// #200000;
// $finish;
#250000;
dma_en(0,1);
cpu_wr(X313_WA_IMU_CTRL, 3); // select config register
cpu_wr(X313_WA_IMU_DATA, 'h4c0000); // set debug_config to 4'h3
cpu_wr(X313_WA_IMU_CTRL, 1); // select period register
cpu_wr(X313_WA_IMU_DATA, IMU_BIT_DURATION | 16'h1000); // set bit counter and stall of 16 sclk half-periods
wait (IMU_CS); // wait IMU inactive
IMU_103695REVA <= 1'b1; // switch to revision "A"
cpu_wr(X313_WA_IMU_CTRL, 3); // select config register
cpu_wr(X313_WA_IMU_DATA, 'h5c0000); // set debug_config to 4'h7
cpu_wr(X313_WA_IMU_CTRL, 0); // select period register
cpu_wr(X313_WA_IMU_DATA, IMU_AUTO_PERIOD); // set period defined by IMU
#480000;
//#480000;
$finish;
`ifdef TEST_IMU
cpu_rd(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
`endif
$finish;
//#250000;
// dma_en(0,1);
//#480000;
dma_en(0,1);
cpu_wr(X313_WA_IMU_CTRL, 3); // select config register
cpu_wr(X313_WA_IMU_DATA, 'h4c0000); // set debug_config to 4'h3
cpu_wr(X313_WA_IMU_CTRL, 1); // select period register
cpu_wr(X313_WA_IMU_DATA, IMU_BIT_DURATION | 16'h1000); // set bit counter and stall of 16 sclk half-periods
wait (IMU_CS); // wait IMU inactive
IMU_103695REVA <= 1'b1; // switch to revision "A"
cpu_wr(X313_WA_IMU_CTRL, 3); // select config register
cpu_wr(X313_WA_IMU_DATA, 'h5c0000); // set debug_config to 4'h7
cpu_wr(X313_WA_IMU_CTRL, 0); // select period register
cpu_wr(X313_WA_IMU_DATA, IMU_AUTO_PERIOD); // set period defined by IMU
#480000;
$finish;
`ifdef TEST_IMU
cpu_rd(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_STATUS); $display ("IMU_STATUS =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
cpu_rd_ce1(X313_RA_IMU_DATA); $display ("IMU_DATA =%x",CPU_DI[31:0]);
`endif
$finish;
//#250000;
// dma_en(0,1);
//#480000;
#200000;
`include "imu_sim_include.vh"
`endif
#200000;
TEST_TITLE = "FIRST_INIT_DONE";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
$finish;
end
$finish;
end
// Second async test for IMU
`ifdef TEST_IMU
initial begin
#10000;
......@@ -1002,6 +602,9 @@ initial begin
TTRIG=0;
#1000;
TTRIG=1;
TEST_TITLE = "EXT_TRIG_DONE";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
end
always #(CLK0_PER/2) CLK0 = ~CLK0;
......@@ -1106,6 +709,8 @@ end
$display (" FRAME_COMPRESS_CYCLES= %d",FRAME_COMPRESS_CYCLES);
$display ("FRAME_COMPRESS_CYCLES_INPUT= %d",FRAME_COMPRESS_CYCLES_INPUT);
$display ("reset done at %t",$time);
TEST_TITLE = "RESET_DONE";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
#10;
......@@ -1146,188 +751,9 @@ end
cpu_wr(X313_WA_CAMSYNCPER, SYNC_BIT_LENGTH); ///set (bit_length -1) (should be 2..255)
cpu_wr(X313_WA_IOPINS, X313_WA_IOPINS_EN_TRIG_OUT); // Enable GPIO output from camsync module
`ifdef TEST_IMU
cpu_wr(X313_WA_IOPINS, X313_WA_IOPINS_EN_IMU_OUT); // 'hc0000000;
/*
reg we_config_imu; // bits 1:0, 2 - enable slot[1:0]
reg we_config_gps; // bits 6:3, 7 - enable - {ext,inver, slot[1:0]} slot==0 - disable
reg we_config_msg; // bits 12:8,13 - enable - {invert,extinp[3:0]} extinp[3:0]=='hf' - disable
reg we_config_syn; // bit 14, 15 - enable - enable logging external timestamps
reg we_config_rst; // bit 16, 17 - enable - reset modules
*/
cpu_wr(X313_WA_IMU_CTRL, 3); // select config register
// cpu_wr(X313_WA_IMU_DATA, 'h3e695); // configure channels and reset // gps timestamp from 1sec input, positive
// cpu_wr(X313_WA_IMU_DATA, 'h3e6b5); // configure channels and reset // gps timestamp from 1sec input, negative
// cpu_wr(X313_WA_IMU_DATA, 'h3e6d5); // configure channels and reset // gps timestamp after pause
// cpu_wr(X313_WA_IMU_DATA, 'h3e6f5); // configure channels and reset // gps timestamp at "$" start
cpu_wr(X313_WA_IMU_DATA, 'h43e6f5); // configure channels and reset // gps timestamp at "$" start, reset configure_debug
cpu_wr(X313_WA_IMU_CTRL, 2); // select register number 2 (serial half-bit duration)
cpu_wr(X313_WA_IMU_DATA, 'h8007); // reset rs232 by 1 in MSB
cpu_wr(X313_WA_IMU_CTRL, 2); // select register number 2 (serial half-bit duration)
cpu_wr(X313_WA_IMU_DATA, 'h0007); // serial speed 8 cycles (period = 32 CLK0 cycles)
cpu_wr(X313_WA_IMU_CTRL, 3); // select config register
cpu_wr(X313_WA_IMU_DATA, 'h20000); // remove reset
// encode 4 sentences
/*
$GPRMC,042931.0,A,4043.39929,N,11155.92706,W,000.00,283.8,250411,013.2,E*45
$GPGGA,042931.0,4043.39929,N,11155.92706,W,1,09,0.8,1280.5,M,-13.8,M,,*5B
$GPGSA,A,3,04,07,08,11,15,17,24,26,27,,,,1.7,0.8,1.5*36
$GPVTG,283.8,T,270.5,M,000.00,N,0000.00,K*7F
*/
cpu_wr(X313_WA_IMU_CTRL, 'h20); // format write
// just ($GP)RMC, GGA, GSA and VTG
cpu_wr(X313_WA_IMU_DATA, 'h6); //
cpu_wr(X313_WA_IMU_DATA, 'hf); //
cpu_wr(X313_WA_IMU_DATA, 'he); //
cpu_wr(X313_WA_IMU_DATA, 'h0); //
cpu_wr(X313_WA_IMU_DATA, 'h9); //
cpu_wr(X313_WA_IMU_DATA, 'h7); //
cpu_wr(X313_WA_IMU_DATA, 'h6); //
cpu_wr(X313_WA_IMU_DATA, 'hb); //
cpu_wr(X313_WA_IMU_DATA, 'h1); //
cpu_wr(X313_WA_IMU_DATA, 'hc); //
cpu_wr(X313_WA_IMU_DATA, 'hf); //
cpu_wr(X313_WA_IMU_DATA, 'h9); //
cpu_wr(X313_WA_IMU_DATA, 'h8); //
cpu_wr(X313_WA_IMU_DATA, 'h0); //
cpu_wr(X313_WA_IMU_DATA, 'h0); //
cpu_wr(X313_WA_IMU_DATA, 'h0); //
/// cpu_wr(X313_WA_IMU_CTRL, 'h30); // first format
//$GPRMC,042931.0,A,4043.39929,N,11155.92706,W,000.00,283.8,250411,013.2,E*45
//0101010 000 : 'hb 'h2a 'h04 'h0
// cpu_wr(X313_WA_IMU_DATA, 'h0b); //number of fields including dummy comma
cpu_wr(X313_WA_IMU_DATA, 'h0a); // testing - made 1 shorter than actual
cpu_wr(X313_WA_IMU_DATA, 'h2a); //
cpu_wr(X313_WA_IMU_DATA, 'h04); //
cpu_wr(X313_WA_IMU_DATA, 'h00); //
/// cpu_wr(X313_WA_IMU_CTRL, 'h34); // second format
//$GPGGA,042931.0,4043.39929,N,11155.92706,W,1,09,0.8,1280.5,M,-13.8,M,,*5B
//0010 1000 0101 0 : 'h0e 'h14 'h0a 'h0
cpu_wr(X313_WA_IMU_DATA, 'h0e); //number of fields including dummy comma
cpu_wr(X313_WA_IMU_DATA, 'h14); //
cpu_wr(X313_WA_IMU_DATA, 'h0a); //
cpu_wr(X313_WA_IMU_DATA, 'h00); //
/// cpu_wr(X313_WA_IMU_CTRL, 'h38); // third format
//$GPGSA,A,3,04,07,08,11,15,17,24,26,27,,,,1.7,0.8,1.5*36
//01000000 00000000 00 : 'h11 'h01 'h00 'h0
cpu_wr(X313_WA_IMU_DATA, 'h11); //number of fields including dummy comma
cpu_wr(X313_WA_IMU_DATA, 'h01); //
cpu_wr(X313_WA_IMU_DATA, 'h00); //
cpu_wr(X313_WA_IMU_DATA, 'h00); //
/// cpu_wr(X313_WA_IMU_CTRL, 'h3c); // fourth format
//$GPVTG,283.8,T,270.5,M,000.00,N,0000.00,K*7F
//00101010 1 : 'h08 'haa 'h00 'h0
cpu_wr(X313_WA_IMU_DATA, 'h08); //number of fields including dummy comma
cpu_wr(X313_WA_IMU_DATA, 'haa); //
cpu_wr(X313_WA_IMU_DATA, 'h00); //
cpu_wr(X313_WA_IMU_DATA, 'h00); //
cpu_wr(X313_WA_IMU_CTRL, 4); // select register number 4
cpu_wr(X313_WA_IMU_DATA, 'h10); // x gyro low
cpu_wr(X313_WA_IMU_DATA, 'h12); // x gyro high
cpu_wr(X313_WA_IMU_DATA, 'h14); //
cpu_wr(X313_WA_IMU_DATA, 'h16); //
cpu_wr(X313_WA_IMU_DATA, 'h18); //
cpu_wr(X313_WA_IMU_DATA, 'h1a); //
cpu_wr(X313_WA_IMU_DATA, 'h1c); // x accel low
cpu_wr(X313_WA_IMU_DATA, 'h1e); //
cpu_wr(X313_WA_IMU_DATA, 'h20); //
cpu_wr(X313_WA_IMU_DATA, 'h22); //
cpu_wr(X313_WA_IMU_DATA, 'h24); //
cpu_wr(X313_WA_IMU_DATA, 'h26); // z accel high
cpu_wr(X313_WA_IMU_DATA, 'h40); // x delta ang low
cpu_wr(X313_WA_IMU_DATA, 'h42); // x delta ang high
cpu_wr(X313_WA_IMU_DATA, 'h44); //
cpu_wr(X313_WA_IMU_DATA, 'h46); //
cpu_wr(X313_WA_IMU_DATA, 'h48); //
cpu_wr(X313_WA_IMU_DATA, 'h4a); //
cpu_wr(X313_WA_IMU_DATA, 'h4c); // x delta vel low
cpu_wr(X313_WA_IMU_DATA, 'h4e); //
cpu_wr(X313_WA_IMU_DATA, 'h50); //
cpu_wr(X313_WA_IMU_DATA, 'h52); //
cpu_wr(X313_WA_IMU_DATA, 'h54); //
cpu_wr(X313_WA_IMU_DATA, 'h56); // z delta vel high
cpu_wr(X313_WA_IMU_DATA, 'h0e); // temperature
cpu_wr(X313_WA_IMU_DATA, 'h70); // time m/s
cpu_wr(X313_WA_IMU_DATA, 'h72); // time d/h
cpu_wr(X313_WA_IMU_DATA, 'h74); // time y/m
cpu_wr(X313_WA_IMU_CTRL, 0); // select period register
cpu_wr(X313_WA_IMU_DATA, 0); // reset IMU
cpu_wr(X313_WA_IMU_DATA, 0); // reset bit counter
#1000;
cpu_wr(X313_WA_IMU_CTRL, 1); // select period register
cpu_wr(X313_WA_IMU_DATA, IMU_BIT_DURATION); // set bit counter (clock frequency divider)
cpu_wr(X313_WA_IMU_CTRL, 0); // select period register
cpu_wr(X313_WA_IMU_DATA, IMU_PERIOD); // set period
// set "odometer" message
cpu_wr(X313_WA_IMU_CTRL, 'h40); // select start of message
cpu_wr(X313_WA_IMU_DATA, 'h01234567); // Message first 4 bytes
cpu_wr(X313_WA_IMU_DATA, 'h12345678); //next
cpu_wr(X313_WA_IMU_DATA, 'h23456789); //next
cpu_wr(X313_WA_IMU_DATA, 'h3456789a); //next
cpu_wr(X313_WA_IMU_DATA, 'h456789ab); //next
cpu_wr(X313_WA_IMU_DATA, 'h56789abc); //next
cpu_wr(X313_WA_IMU_DATA, 'h6789abcd); //next
cpu_wr(X313_WA_IMU_DATA, 'h789abcde); //next
cpu_wr(X313_WA_IMU_DATA, 'h89abcdef); //next
cpu_wr(X313_WA_IMU_DATA, 'h9abcdef0); //next
cpu_wr(X313_WA_IMU_DATA, 'habcdef01); //next
cpu_wr(X313_WA_IMU_DATA, 'hbcdef012); //next
cpu_wr(X313_WA_IMU_DATA, 'hcdef0123); //next
cpu_wr(X313_WA_IMU_DATA, 'hdef01234); //next
// extra 8 bytes - will not be logged
cpu_wr(X313_WA_IMU_DATA, 'hef012345); //next
cpu_wr(X313_WA_IMU_DATA, 'hf0123456); //next
// cpu_wr(1,32'h00000); // disable and reset dma
// cpu_wr(1,32'h20000); // enable DMA channel 1
cpu_wr(1,32'h00024); // disable and reset dma (both channels)
cpu_wr(1,32'h00028); // enable DMA channel 1
// cpu_wr(X313_WA_IMU_DATA, 1); // set period
/*
parameter X313_WA_IMU_DATA= 'h7e;
parameter X313_WA_IMU_CTRL= 'h7f;
parameter X313_RA_IMU_DATA= 'h7e; // read fifo word, advance pointer (32 reads w/o ready check)
parameter X313_RA_IMU_STATUS= 'h7f; // LSB==ready
*/
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
cpu_rd_ce1(1);
`include "imu_sim2_include.vh"
`endif
program_quantization;
......@@ -1341,7 +767,7 @@ $GPVTG,283.8,T,270.5,M,000.00,N,0000.00,K*7F
set_focus_filt(0,100,8,24,127,0,1);
set_zero_bin (8'hc0,8'h80); // zero_bin 0.75 (half), bias (0.5 - true rounding)
cpu_wr(X313_WA_CAMSYNCPER, TRIG_PERIOD); /// starts generatoe *******************new
cpu_wr(X313_WA_CAMSYNCPER, {8'b0,TRIG_PERIOD}); /// starts generatoe *******************new
......@@ -1450,8 +876,8 @@ $GPVTG,283.8,T,270.5,M,000.00,N,0000.00,K*7F
cpu_rd('h10) ; //status
// program rtc
cpu_wr('h4a, 16'h8000); // maximal correction to the rtc
cpu_wr('h48, 20'h00000); // microseconds
cpu_wr('h4a, 'h8000); // maximal correction to the rtc
cpu_wr('h48, 'h00000); // microseconds
cpu_wr('h49,32'h12345678); // seconds
// #1000;
// cpu_wr('h45,32'h12345678); // seconds - repeat for simulation
......@@ -1490,9 +916,13 @@ $GPVTG,283.8,T,270.5,M,000.00,N,0000.00,K*7F
cpu_wr('h61,'h43000000 | (HISTOGRAM_HEIGHT-2)); // height
TEST_TITLE = "INIT_DRAM";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
init_sdram;
TEST_TITLE = "INIT_DRAM_DONE";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
`ifdef ENDFRAMES
cpu_wr(X313_WA_DCR0, X313_WA_DCR0_ENDFRAMESEN); // enable ending frames if insufficient data
`else
......@@ -1563,6 +993,8 @@ $GPVTG,283.8,T,270.5,M,000.00,N,0000.00,K*7F
// dma_en(0,1);
dma_en(1,1);
TEST_TITLE = "DMA_EN_1_1";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
//*************** cpu_wr(1,32'h00000); // disable and reset dma *** immediate ***
// cpu_wr('h60,'h01000000);
......@@ -1725,7 +1157,11 @@ $display ("saturation=2");
cpu_wr('h64,'h31400000); // [BY] => 0x180000
`ifdef CONTINUOUS_COMPRESSION
TEST_TITLE = "START_CONTINUOUS_COMPRESSION";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
`else
TEST_TITLE = "INIT_CHAN_SEQ";
init_chan_seq ('h64,2,1,(PF_HEIGHT>0)?1:0,DEPEND,'h200000,(WOI_WIDTH>>4)-1,(WOI_HEIGHT & 'h3ff0)-'h10); // ch2,mode1,wnr0,depend1,sa000000,nTileX10, nTileY10
`ifdef TEST_INSUFFICIENT_DATA
// Don't set correct number of blocks, leave the number larger
......@@ -1767,13 +1203,29 @@ task program_compressor;
read_ch3_descript;
read_status;
`ifdef TEST_CH3_AND_PHASE
TEST_TITLE = "write256_ch3-1";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
write256_ch3(16'h1100);
TEST_TITLE = "write256_ch3-2";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
write256_ch3(16'h2200);
TEST_TITLE = "write256_ch3-3";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
write256_ch3(16'h3300);
TEST_TITLE = "write256_ch3-4";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
write256_ch3(16'h4400);
TEST_TITLE = "write256_ch3-5";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
write256_ch3(16'h5500);
TEST_TITLE = "write256_ch3-6";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
write256_ch3(16'h6600);
TEST_TITLE = "write256_ch3-7";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
close_ch3; // wait write buffer empty
TEST_TITLE = "write256_ch3-8";
$display("===================== TEST_%s ========================= @%t",TEST_TITLE,$time);
read_ch3_descript;
read_status;
init_chan (3,0,0,0,0,'h20,'hf); // ch3,mode1,wnr1,depend0,sa0,nTileX1f, nTileY2 writes 1 full and 1 small
......@@ -2037,7 +1489,7 @@ parameter CPU_RH_A = 2;
end
endtask
task cpu_rd_ce1_isr;
task cpu_rd_ce1_isr; //SuppressThisWarning Veditor UNUSED TASK
input [ 7:0] ia;
begin
wait (~BUS[BUSOP_ISR_RD1]);
......@@ -2094,10 +1546,10 @@ parameter CH3_WEMPTY_BITNUM=8; // was 0??
// enable SDRAM controller and refresh (all channels disabled)
SDRAM_MODE=6'h00; cpu_wr(SDRAM_ENABLE,SDRAM_MODE); // to init to 0 (for simulation only)
SDRAM_MODE = 'h00; cpu_wr(SDRAM_ENABLE,{20'b0,SDRAM_MODE}); // to init to 0 (for simulation only)
#(100);
// SDRAM_MODE=6'h03; cpu_wr(SDRAM_ENABLE,SDRAM_MODE); // All channels disabled, only refresh and sdram itself
SDRAM_MODE=12'haaf; cpu_wr(SDRAM_ENABLE,SDRAM_MODE); // All channels disabled, only refresh and sdram itself
SDRAM_MODE= 'haaf; cpu_wr(SDRAM_ENABLE,{20'b0,SDRAM_MODE}); // All channels disabled, only refresh and sdram itself
end
endtask
......@@ -2122,11 +1574,11 @@ parameter CH3_WEMPTY_BITNUM=8; // was 0??
w1[15:0]= {2'b0,inTileX[9:0],isa[24:21]};
w2[15:0]= {4'b0,inTileY[11:0]};
$display (" writing %x to %x",w1,CHN_BASEA+4*ichnum+1);
cpu_wr(CHN_BASEA+4*ichnum+1,w1);
cpu_wr(CHN_BASEA+4*ichnum+1,{16'b0,w1});
$display (" writing %x to %x",w2,CHN_BASEA+4*ichnum+2);
cpu_wr(CHN_BASEA+4*ichnum+2,w2);
cpu_wr(CHN_BASEA+4*ichnum+2,{16'b0,w2});
$display (" writing %x to %x",w0,CHN_BASEA+4*ichnum+0);
cpu_wr(CHN_BASEA+4*ichnum+0,w0);
cpu_wr(CHN_BASEA+4*ichnum+0,{16'b0,w0});
// enable channel:
// SDRAM_MODE=SDRAM_MODE | (6'h4 << ichnum);
SDRAM_MODE= (12'h030 << (ichnum <<1));
......@@ -2136,7 +1588,7 @@ parameter CH3_WEMPTY_BITNUM=8; // was 0??
4'h2: SDRAM_MODE= 12'h300;
4'h3: SDRAM_MODE= 12'hc00;
endcase
cpu_wr(SDRAM_ENABLE,SDRAM_MODE);
cpu_wr(SDRAM_ENABLE,{20'b0,SDRAM_MODE});
end
endtask
// init_chan (2,1,0,1,'h200000,'h07,'h10); // ch2,mode1,wnr0,depend1,sa000000,nTileX10, nTileY10
......@@ -2218,7 +1670,7 @@ parameter CH3_WEMPTY_BITNUM=8; // was 0??
end
endtask
/*
task writeGrad_ch3; // write 256 8-bit words (as 64 x 32) , same all lines, with value=first+x
input [7:0] first;
integer i;
......@@ -2253,7 +1705,7 @@ parameter CH3_WEMPTY_BITNUM=8; // was 0??
end
endtask
*/
// 1-cycle latency!
task read256_ch3; // read 16 16-bit words (as 8 x 32)
reg [15:0] i;
......@@ -2286,13 +1738,13 @@ parameter CH3_WEMPTY_BITNUM=8; // was 0??
*/
task program_huffman;
// huffman tables data
reg [23:0] huff_data[0:511];
reg [23:0] huff_data[0:511]; // SuppressThisWarning VEditor : assigned in $readmem() system task
integer i;
begin
$readmemh("huffman.dat",huff_data);
cpu_wr ('he,'h200); // start address of huffman tables
for (i=0;i<512;i=i+1) begin
cpu_wr('hf,huff_data[i]);
cpu_wr('hf,{8'b0,huff_data[i]});
end
end
endtask
......@@ -2300,7 +1752,7 @@ endtask
task program_quantization;
// quantization tables data
// reg [11:0] quant_data[0:255];
reg [15:0] quant_data[0:255];
reg [15:0] quant_data[0:255]; // SuppressThisWarning VEditor : assigned in $readmem() system task
integer i;
begin
// $readmemh("quantization.dat",quant_data);
......@@ -2314,7 +1766,7 @@ endtask
task program_coring;
// coring tables data
reg [15:0] coring_data[0:1023];
reg [15:0] coring_data[0:1023]; // SuppressThisWarning VEditor : assigned in $readmem() system task
integer i;
begin
// $readmemh("quantization.dat",quant_data);
......@@ -2330,13 +1782,13 @@ endtask
task program_focus_filt;
// focus quality filter data
reg [15:0] filt_data[0:127];
reg [15:0] filt_data[0:127]; // SuppressThisWarning VEditor : assigned in $readmem() system task
integer i;
begin
$readmemh("focus_filt.dat",filt_data);
cpu_wr ('he,'h800); // start address of focus filter tables
for (i=0;i<128;i=i+1) begin
cpu_wr('hf,filt_data[i]);
cpu_wr('hf,{16'b0,filt_data[i]});
end
end
endtask
......@@ -2409,9 +1861,9 @@ endtask
task program_curves;
reg [9:0] curves_data[0:1027];
reg [9:0] curves_data[0:1027]; // SuppressThisWarning VEditor : assigned in $readmem() system task
integer n,i,base,diff,diff1;
reg [10:0] curv_diff;
///AF: reg [10:0] curv_diff;
begin
$readmemh("linear1028rgb.dat",curves_data);
// $readmemh("zero1028rgb.dat",curves_data);
......@@ -2424,18 +1876,18 @@ task program_curves;
diff1=curves_data[257*n+i+1]-curves_data[257*n+i]+8;
// $display ("%x %x %x %x %x %x",n,i,curves_data[257*n+i], base, diff, diff1);
#1;
if ((diff>63) || (diff < -64)) cpu_wr('hf,{1'b1,diff1[10:4],base[9:0]});
else cpu_wr('hf,{1'b0,diff [ 6:0],base[9:0]});
if ((diff>63) || (diff < -64)) cpu_wr('hf,{14'b0,1'b1,diff1[10:4],base[9:0]});
else cpu_wr('hf,{14'b0,1'b0,diff [ 6:0],base[9:0]});
end
end
end
endtask
/// NOTE: Can not use sequencer to program tables - may collide with software table writes !!!
task pre_program_curves; // all but last word, last word schedule through sequencer to provided address
task pre_program_curves; // all but last word, last word schedule through sequencer to provided address //SuppressThisWarning Veditor UNUSED TASK
input [7:0] seq_addr;
reg [9:0] curves_data[0:1027];
reg [9:0] curves_data[0:1027]; // SuppressThisWarning VEditor : assigned in $readmem() system task
integer n,i,base,diff,diff1;
reg [10:0] curv_diff;
///AF: reg [10:0] curv_diff;
reg [23:0] data;
begin
$readmemh("linear1028rgb.dat",curves_data);
......@@ -2449,9 +1901,9 @@ task pre_program_curves; // all but last word, last word schedule through sequen
diff1=curves_data[257*n+i+1]-curves_data[257*n+i]+8;
// $display ("%x %x %x %x %x %x",n,i,curves_data[257*n+i], base, diff, diff1);
#1;
if ((diff>63) || (diff < -64)) data={1'b1,diff1[10:4],base[9:0]};
else data={1'b0,diff [ 6:0],base[9:0]};
if ((n<3) || (i<255)) cpu_wr('hf, data);
if ((diff>63) || (diff < -64)) data={6'b0,1'b1,diff1[10:4],base[9:0]};
else data={6'b0,1'b0,diff [ 6:0],base[9:0]};
if ((n<3) || (i<255)) cpu_wr('hf, {8'b0,data});
else begin
cpu_wr(seq_addr,'h0e0007ff);
cpu_wr(seq_addr,{8'h0f,data[23:0]});
......@@ -2486,52 +1938,9 @@ task program_compressor;
1'b1,cmd[1:0]});
end
endtask
task send_serial_bit;
input [7:0] data_byte;
reg [7:0] d;
begin
d <= data_byte;
wait (CLK0); wait (~CLK0);
// SERIAL_BIT should be 1 here
// Send start bit
SERIAL_BIT <= 1'b0;
repeat (IMU_GPS_BIT_PERIOD) begin wait (CLK0); wait (~CLK0); end
// Send 8 data bits, LSB first
repeat (8) begin
SERIAL_BIT <= d[0];
#1 d[7:0] <= {1'b0,d[7:1]};
repeat (IMU_GPS_BIT_PERIOD) begin wait (CLK0); wait (~CLK0); end
end
// Send stop bit
SERIAL_BIT <= 1'b1;
repeat (IMU_GPS_BIT_PERIOD) begin wait (CLK0); wait (~CLK0); end
end
endtask
task send_serial_pause;
begin
wait (CLK0); wait (~CLK0);
SERIAL_BIT <= 1'b1;
repeat (16) begin
repeat (IMU_GPS_BIT_PERIOD) begin wait (CLK0); wait (~CLK0); end
end
end
endtask
// SERIAL_DATA_FD=$fopen("gps_data.dat","r");
task send_serial_line;
integer char;
begin
char=0;
while (!$feof (SERIAL_DATA_FD) && (char != 'h0a)) begin
char=$fgetc(SERIAL_DATA_FD);
send_serial_bit(char);
end
end
endtask
`ifdef TEST_IMU
`include "imu_sim_tasks_include.vh"
`endif
endmodule
......@@ -2541,7 +1950,7 @@ module oneshot(trigger,
input trigger;
output out;
reg out;
event start;
event start; //SuppressThisWarning Veditor "event" is not supported in VDT?
parameter duration=4000;
initial out= 0;
always @ (posedge trigger) begin
......
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