diff --git a/IP_wrappers/PLL_integration_layer.v b/IP_wrappers/PLL_integration_layer.v new file mode 100644 index 0000000000000000000000000000000000000000..0f22c04c2d880443cc99695bb016867ed3ea18cb --- /dev/null +++ b/IP_wrappers/PLL_integration_layer.v @@ -0,0 +1,341 @@ +// Integration layer for an APB to PLL interface + +module snps_PLL_integration_layer #( + parameter DEFAULT_DIVVCOP=4'h0, + parameter DEFAULT_DIVVCOR=4'h0, + parameter DEFAULT_FBDIV=7'h10, + parameter DEFAULT_P = 6'h03, + parameter DEFAULT_R = 6'h01, + parameter DEFAULT_PREDIV = 5'h00 + )( +`ifdef POWER_PINS + inout wire agnd, + inout wire avdd, + inout wire avddhv, + inout wire dgnd, + inout wire dvdd, + inout wire vp_vref, +`endif + input wire ref_clk, + input wire resetn, + + output wire pll_lock, + output wire out_clk1, + output wire out_clk2, + + input wire PSELx, + input wire [9:0] PADDR, + input wire PENABLE, + input wire [2:0] PPROT, + input wire [3:0] PSTRB, + input wire PWRITE, + input wire [31:0] PWDATA, + output wire [31:0] PRDATA, + output wire PREADY, + output wire PSLVERR +); + +// Control register +// Bypass ---------------------------------------------------------------------------------| +// Enable P -----------------------------------------------------------------------| | +// Enable R ---------------------------------------------------------------------| | | +// Gear Shift ---------------------------------------------------------------| | | | +// bit 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 + +// +reg bypass_reg; +reg enp_reg; +reg enr_reg; +reg gear_shift_reg; + +reg [11:0] gear_shift_counter; +reg [11:0] enable_counter; + +reg [3:0] divvcop_reg; +reg [3:0] divvcor_reg; +reg [6:0] fbdiv_reg; +reg [5:0] p_reg; +reg [5:0] r_reg; +reg [4:0] prediv_reg; + +reg pll_lock_reg; + +reg [4:0] PLL_test_addr; +reg PLL_test_wr_en; +reg PLL_test_rd_en; +reg [2:0] APB_PLL_counter; +reg PLL_read_write_done; +reg [7:0] PLL_data_i; +wire [7:0] PLL_data_o; + +// APB interface +localparam APB_IDLE = 3'd0, + APB_WRITE = 3'd1, + APB_READ = 3'd2, + APB_WRITE_PLL = 3'd3, + APB_READ_PLL = 3'd4; + +reg [2:0] apb_current_state; +reg [2:0] apb_next_state; + +reg PSLVERR_reg; +reg [31:0] PRDATA_reg; + +assign PRDATA = PRDATA_reg; +assign PSLVERR = PSLVERR_reg; + +always @(posedge ref_clk or negedge resetn) begin + if(~resetn) begin + apb_current_state <= APB_IDLE; + APB_PLL_counter <= 3'h0; + end else begin + apb_current_state <= apb_next_state; + if(apb_current_state == APB_WRITE_PLL || apb_current_state == APB_READ_PLL) begin + APB_PLL_counter <= APB_PLL_counter + 3'h1; + end else begin + APB_PLL_counter <= 3'h0; + end + end +end + +always @(*) begin + if(~resetn) begin + bypass_reg = 1'b0; + enp_reg = 1'b0; + enr_reg = 1'b0; + gear_shift_reg = 1'b1; + gear_shift_counter = 16'h0000; + enable_counter = 16'h0000; + pll_lock_reg = 1'b0; + + // Default startup of PLL + // F_vco = 100*20/1 = 1.6 GHz + // F_clkoutp = 400 MHz + // F_clkoutr = 800 MHz + divvcop_reg = DEFAULT_DIVVCOP; // Divvco = 1 + divvcor_reg = DEFAULT_DIVVCOR; // Divvco = 1 + fbdiv_reg = DEFAULT_FBDIV; // Feeback = 16 + p_reg = DEFAULT_P; // p = 4 + r_reg = DEFAULT_R; // r=2 + prediv_reg = DEFAULT_PREDIV; // prediv=1 + + PSLVERR_reg = 1'b0; + PLL_read_write_done = 1'b0; + PLL_test_wr_en = 1'b0; + PLL_test_rd_en = 1'b0; + end else begin + if((gear_shift_reg == 1'b1)) begin + gear_shift_counter = gear_shift_counter+1; + if (gear_shift_counter>12'h200) begin + gear_shift_reg = 1'b0; + gear_shift_counter = 12'h000; + end + end else begin + if((enp_reg==1'b0)||(enr_reg==1'b0)) begin + enable_counter = enable_counter+1; + if(enable_counter>12'h200) begin + enp_reg = 1'b1; + enr_reg = 1'b1; + enable_counter = 12'h000; + end + end + end + if((enp_reg==1'b1)||(enr_reg==1'b1)) begin + pll_lock_reg = pll_lock; + end + case(apb_current_state) + APB_IDLE: begin + PSLVERR_reg = 1'b0; + PLL_read_write_done = 1'b0; + PLL_test_wr_en = 1'b0; + PLL_test_rd_en = 1'b0; + + if(PSELx) begin + if(PWRITE) begin + if(PADDR[9]) + apb_next_state = APB_WRITE_PLL; + else + apb_next_state = APB_WRITE; + end else begin + if(PADDR[9]) + apb_next_state = APB_READ_PLL; + else + apb_next_state = APB_READ; + end + end + else begin + apb_next_state = APB_IDLE; + end + end + APB_WRITE: begin + case(PADDR) + 10'h000: begin + if(PSTRB[0]==1'b1) begin + bypass_reg = PWDATA[0]; + enp_reg = PWDATA[4]; + enr_reg = PWDATA[5]; + gear_shift_reg = PWDATA[7]; + end else begin + PSLVERR_reg = 1'b1; + end + end + 10'h001: begin + if(PSTRB[0]==1'b1) + gear_shift_counter[7:0] = PWDATA[7:0]; + if(PSTRB[1]==1'b1) + gear_shift_counter[11:8] = PWDATA[11:8]; + end + 10'h002: begin + if(PSTRB[0]==1'b1) + enable_counter[7:0] = PWDATA[7:0]; + if(PSTRB[1]==1'b1) + enable_counter[11:8] = PWDATA[11:8]; + end + 10'h003: begin + if(PSTRB[0]==1'b1) + r_reg = PWDATA[5:0]; + if(PSTRB[1]==1'b1) + divvcor_reg = PWDATA[11:8]; + if(PSTRB[2]==1'b1) + p_reg = PWDATA[21:16]; + if(PSTRB[3]==1'b1) + divvcop_reg = PWDATA[27:24]; + end + 10'h004: begin + if(PSTRB[0]==1'b1) + fbdiv_reg = PWDATA[6:0]; + if(PSTRB[1]==1'b1) + prediv_reg = PWDATA[12:8]; + end + + endcase + apb_next_state = APB_IDLE; + end + APB_READ: begin + case(PADDR) + 10'h000: PRDATA_reg = {{24{1'b0}}, gear_shift_reg, 1'b0, enr_reg, enp_reg, {3{1'b0}}, bypass_reg}; + 10'h001: PRDATA_reg = {{20{1'b0}}, gear_shift_counter}; + 10'h002: PRDATA_reg = {{20{1'b0}}, enable_counter}; + 10'h003: PRDATA_reg = {{4{1'b0}}, divvcop_reg, {2{1'b0}}, p_reg, {4{1'b0}}, divvcor_reg, {2{1'b0}}, r_reg}; + 10'h004: PRDATA_reg = {{19{1'b0}}, prediv_reg, {1{1'b0}}, fbdiv_reg}; + 10'h005: PRDATA_reg = 32'h534E504C; + 10'h006: PRDATA_reg = {{31{1'b0}},pll_lock_reg}; + endcase + apb_next_state = APB_IDLE; + end + APB_WRITE_PLL: begin + case(PADDR) + 10'h200: PLL_test_addr = 5'h00; + 10'h201: PLL_test_addr = 5'h01; + 10'h202: PLL_test_addr = 5'h02; + 10'h203: PLL_test_addr = 5'h03; + 10'h204: PLL_test_addr = 5'h04; + 10'h205: PLL_test_addr = 5'h10; + 10'h206: PLL_test_addr = 5'h11; + 10'h207: PLL_test_addr = 5'h12; + 10'h208: PLL_test_addr = 5'h13; + 10'h209: PLL_test_addr = 5'h14; + 10'h20A: PLL_test_addr = 5'h15; + 10'h20B: PLL_test_addr = 5'h16; + 10'h20C: PLL_test_addr = 5'h17; + endcase + PLL_test_wr_en = 1'b1; + PLL_data_i <= PWDATA[7:0]; + if(APB_PLL_counter > 3'h2) begin + PLL_read_write_done = 1'b1; + end + if(PLL_read_write_done) begin + apb_next_state = APB_IDLE; + end else begin + apb_next_state = APB_WRITE_PLL; + end + end + APB_READ_PLL: begin + case(PADDR) + 10'h200: PLL_test_addr = 5'h00; + 10'h201: PLL_test_addr = 5'h01; + 10'h202: PLL_test_addr = 5'h02; + 10'h203: PLL_test_addr = 5'h03; + 10'h204: PLL_test_addr = 5'h04; + 10'h205: PLL_test_addr = 5'h10; + 10'h206: PLL_test_addr = 5'h11; + 10'h207: PLL_test_addr = 5'h12; + 10'h208: PLL_test_addr = 5'h13; + 10'h209: PLL_test_addr = 5'h14; + 10'h20A: PLL_test_addr = 5'h15; + 10'h20B: PLL_test_addr = 5'h16; + 10'h20C: PLL_test_addr = 5'h17; + endcase + PLL_test_rd_en = 1'b1; + if(APB_PLL_counter > 3'h2) begin + PLL_read_write_done = 1'b1; + PRDATA_reg = {{24{1'b0}}, PLL_data_o}; + end + if(PLL_read_write_done) begin + apb_next_state = APB_IDLE; + end else begin + apb_next_state = APB_READ_PLL; + end + end + default: apb_next_state = APB_IDLE; + endcase + end +end + + +assign PREADY = ((apb_current_state==APB_READ|apb_current_state==APB_WRITE|PLL_read_write_done==1'b1))? 1'b1:1'b0; + + +dwc_z19606ts_ns u_snps_PLL( +`ifdef BEHAVIOURAL_SIM + // .agnd(64'd0), // Analog and digital clean ground + // .avdd(64'h3FECCCCCCCCCCCCD), // Analog clean 0.9V supply + // .avddhv(64'h3FFCCCCCCCCCCCCD), // Dedicated analog 1.8V supply + // .dgnd(64'd0), // Digital ground + // .dvdd(64'h3FECCCCCCCCCCCCD), // Digital 0.9V supply + .vp_vref(64'h3FECCCCCCCCCCCCD), // Input reference voltage (similar to AVDD) +`else +// .agnd(agnd), +// .avdd(avdd), +// .avddhv(avddhv), +// .dgnd(dgnd), +// .dvdd(dvdd), + .vp_vref(vp_vref), +`endif + // Clock Signals + .ref_clk(ref_clk), // Input reference clock signal + .clkoutp(out_clk1), + .clkoutr(out_clk2), + + .bypass(bypass_reg), //PLL Bypass mode (0: clk_out = PLL output 1:clk_out = ref_clk/(p/r)) + .divvcop(divvcop_reg), //Output divider for clock P (3:0) + .divvcor(divvcor_reg), //Output divider for clock R (3:0) + .enp(enp_reg), // Enable output clock P (1: clk_out = PLL output 0: clk_out = 0 or ref_clock/p) + .enr(enr_reg), // Enable output clock R (1: clk_out = PLL output 0: clk_out = 0 or ref_clock/r) + .fbdiv(fbdiv_reg), // Feedback multiplication facor (7 bits 8-131) + .lock(pll_lock), // PLL Lock State + .gear_shift(gear_shift_reg), // Locking control, set high for faster PLL locking at cost of phase margin and jitter + .p(p_reg), // Post divider division factor P (1-64) + .prediv(prediv_reg), // input frequency division factor (1-32) + .pwron(1'b1), // Power on control + .r(r_reg), // Post divider division factor R (1-64) + .rst(~resetn), // Reset signal (set high for 4us whenever PWRON goes high) + + .vregp(), // Output voltage regulator for P clock + .vregr(), // Output voltage regulator for R clock + + + // Test Signals + .test_data_i(PLL_data_i), //Data bus input control registers (7:0) + .test_rd_en(PLL_test_rd_en), // Control register read enable + .test_rst(~resetn), // Control register reset signal + .test_sel(PLL_test_addr), // Select lines for control register (4:0) + .test_wr_en(PLL_test_wr_en), // Control register write enable + .test_data_o(PLL_data_o), //Data bus output control registers (7:0) + + .atb_f_m(), //Signal for sinking or sourcing currents to/from PLL (for internal debug) + .atb_s_m(), // Signal for sensing voltages internal to PLL (for internal debug) + .atb_s_p() // Signal for sensing voltages internal to PLL (for internal debug) +); + +endmodule \ No newline at end of file diff --git a/IP_wrappers/synopsys_PD_sensor_integration.v b/IP_wrappers/synopsys_PD_sensor_integration.v index 8805489613ff02b5607a156baebcad27952aad36..7c0425cccc6c547e8bba603f5b1bf0e19a7dd502 100644 --- a/IP_wrappers/synopsys_PD_sensor_integration.v +++ b/IP_wrappers/synopsys_PD_sensor_integration.v @@ -68,28 +68,11 @@ assign irq_pd_rdy = pd_irq_rdy_reg; // Main sequential logic always @(posedge PCLK or negedge aRESETn)begin if(~aRESETn) begin - // Software Definable - pd_enable_reg <= 1'b0; - pd_clk_div <= 8'd7; // 100MHz/(7*2) = 7.1MHz (max 8 MHz) - - pd_config_reg1 <= 8'h00; // Parallel mode, Process detector speed mode - pd_config_reg2 <= 8'hC0; // Built in delay chain - pd_config_reg3 <= 8'h21; // W=63 A=32 - pd_cload <= 1'b0; - - pd_irq_clear_reg <= 1'b0; - pd_irq_enabled <= 1'b0; - pd_run_reg <= 1'b0; - pd_run_continuous_reg <= 1'b0; - pd_ready_reg_clr <= 1'b0; - // Automatically controlled registers pd_irq_rdy_reg <= 1'b0; pd_ready_reg <= 1'b0; // APB Control apb_current_state <= APB_IDLE; - apb_next_state <= APB_IDLE; - PSLVERR_reg <= 1'b0; end else begin if(pd_irq_enabled && pd_ready) @@ -97,18 +80,11 @@ always @(posedge PCLK or negedge aRESETn)begin if(pd_irq_clear_reg) pd_irq_rdy_reg <= 1'b0; - if(pd_run_continuous_reg) - pd_run_reg <= 1'b1; - if(pd_run_clear) begin - pd_run_clear <= 1'b0; - pd_run_reg <= 1'b0; - end if(pd_ready) pd_ready_reg <= 1'b1; if(pd_ready_reg_clr) begin - pd_ready_reg_clr <= 1'b0; pd_ready_reg <= 1'b0; end // APB control @@ -140,28 +116,64 @@ end reg [2:0] pd_reset_delay; reg pd_run_delay; +reg pd_run_delay_reg; always @(posedge pd_clk_slow or negedge aRESETn) begin + if(~aRESETn) begin + pd_run_delay_reg <= 1'b0; +// pd_local_reset <= 1'b0; +// pd_reset_delay <= 3'h0; +// pd_run_clear <= 1'b0; +// pd_run_delay <= 1'b0; + end else begin + pd_run_delay_reg <= pd_run_delay; + end +end + +always @(*) begin if(~aRESETn) begin - pd_local_reset <= 1'b0; - pd_reset_delay <= 3'h0; - pd_run_clear <= 1'b0; - pd_run_delay <= 1'b0; + pd_enable_reg = 1'b0; + pd_clk_div = 8'h14; + + pd_config_reg1 = 8'h00; + pd_config_reg2 = 8'hC0; + pd_config_reg3 = 8'h21; + pd_cload = 1'b0; + + pd_irq_clear_reg = 1'b0; + pd_irq_enabled = 1'b0; + pd_run_reg = 1'b0; + pd_run_continuous_reg = 1'b0; + pd_ready_reg_clr = 1'b0; + pd_local_reset = 1'b0; + pd_reset_delay = 3'h0; + pd_run_clear = 1'b0; + pd_run_delay = 1'b0; + + PSLVERR_reg = 1'b0; end else begin + if(pd_ready_reg_clr) begin + pd_ready_reg_clr = 1'b0; + end + + if(pd_run_continuous_reg) + pd_run_reg = 1'b1; + if(pd_run_clear) begin + pd_run_clear = 1'b0; + pd_run_reg = 1'b0; + end + if(~pd_run_continuous_reg & pd_run_reg) - pd_run_delay <= 1'b1; - if(pd_run_delay) begin - pd_run_delay <= 1'b0; - pd_run_clear <= 1'b1; + pd_run_delay = 1'b1; + if(pd_run_delay_reg) begin + pd_run_delay = 1'b0; + pd_run_clear = 1'b1; end if(~pd_local_reset) - pd_reset_delay <= pd_reset_delay + 1'b1; + pd_reset_delay = pd_reset_delay + 1'b1; if(pd_reset_delay>=3'h6) - pd_local_reset <= 1'b1; - end -end + pd_local_reset = 1'b1; -always @(*) begin case(apb_current_state) APB_IDLE: begin PSLVERR_reg = 1'b0; @@ -179,7 +191,7 @@ always @(*) begin end APB_WRITE: begin case(PADDR) - 10'h000: begin + 2'h0: begin if(PSTRB[0]==1'b1) begin pd_enable_reg = PWDATA[0]; pd_run_reg = PWDATA[1]; @@ -216,7 +228,7 @@ always @(*) begin APB_READ: begin case(PADDR) 2'h0: PRDATA_reg = {7'h00, pd_ready_reg, 6'h0, pd_irq_clear_reg, pd_irq_enabled, pd_clk_div, 3'h0, pd_local_reset, pd_ready_reg_clr, pd_run_continuous_reg, pd_run_reg, pd_enable_reg}; - 2'h1: PRDATA_reg = {30'h0, pd_data}; + 2'h1: PRDATA_reg = {20'h0, pd_data}; 2'h2: PRDATA_reg = {7'h0, pd_cload, pd_config_reg3, pd_config_reg2, pd_config_reg1}; // Configuration 2'h3: PRDATA_reg = 32'h736E7064; // ID Reg endcase @@ -224,6 +236,7 @@ always @(*) begin end default: apb_next_state = APB_IDLE; endcase + end end assign PREADY = (apb_current_state==APB_READ|apb_current_state==APB_WRITE)? 1'b1:1'b0; diff --git a/IP_wrappers/synopsys_TS_sensor_integration.v b/IP_wrappers/synopsys_TS_sensor_integration.v index 907f3d07d2d201b35e984e636287884421057ae9..1755889e1e00bd20b9510babaefb9810b1a162c9 100644 --- a/IP_wrappers/synopsys_TS_sensor_integration.v +++ b/IP_wrappers/synopsys_TS_sensor_integration.v @@ -20,7 +20,11 @@ module synopsys_TS_sensor_integration( output wire PSLVERR, input wire ts_vcal, - inout wire [3:0] ts_an_test, + inout wire ts_an_test_0, + inout wire ts_an_test_1, + inout wire ts_an_test_2, + inout wire ts_an_test_3, + output wire ts_vss_sense, output wire irq_ts_rdy ); @@ -75,19 +79,6 @@ assign irq_ts_rdy = ts_irq_rdy_reg; // Main sequential logic always @(posedge PCLK or negedge aRESETn)begin if(~aRESETn) begin - // Synopsys TS register control logic - // Software definable - ts_irq_clear_reg <= 1'b0; //Clear interrupt - ts_irq_enabled <= 1'b0; //Enable interrupt - ts_run_reg <= 1'b0; - ts_enable_reg <= 1'b0; //Enable Temperature sensor - ts_run_continuous_reg <= 1'b0; - ts_clk_div <= 8'd24; - ts_ready_reg_clr <= 1'b0; - - ts_sig_en <= 1'b0; - ts_tm_an <= 4'h0; - ts_cal <= 1'b0; // Automatically controlled registers ts_irq_rdy_reg <= 1'b0; @@ -95,8 +86,6 @@ always @(posedge PCLK or negedge aRESETn)begin // APB Control apb_current_state <= APB_IDLE; - apb_next_state <= APB_IDLE; - PSLVERR_reg <= 1'b0; end else begin @@ -106,21 +95,14 @@ always @(posedge PCLK or negedge aRESETn)begin if (ts_irq_clear_reg) ts_irq_rdy_reg <= 1'b0; - - if(ts_run_continuous_reg) - ts_run_reg <= 1'b1; - if(ts_run_clear) begin - ts_run_clear <= 1'b0; - ts_run_reg <= 1'b0; - end if(ts_ready) ts_ready_reg <= 1'b1; - + if(ts_ready_reg_clr) begin - ts_ready_reg_clr <= 1'b0; ts_ready_reg <= 1'b0; end + // APB control apb_current_state <= apb_next_state; end @@ -150,30 +132,76 @@ end reg [2:0] ts_reset_delay; reg ts_run_delay; +reg ts_ready_reg_clr_del; always @(posedge ts_clk_slow or negedge aRESETn) begin if(~aRESETn) begin - ts_local_reset <= 1'b0; - ts_run_clear <= 1'b0; - ts_reset_delay <= 3'h0; - ts_run_delay <= 1'b0; + // ts_local_reset <= 1'b0; + // ts_run_clear <= 1'b0; + // ts_reset_delay <= 3'h0; + // ts_run_delay <= 1'b0; + ts_ready_reg_clr_del <= 1'b0; end else begin + // if(~ts_run_continuous_reg & ts_run_reg) + // ts_run_delay <= 1'b1; + // if(ts_run_delay) begin + // ts_run_delay <= 1'b0; + // ts_run_clear <= 1'b1; + // end + // if(~ts_local_reset) + // ts_reset_delay <= ts_reset_delay + 1'b1; + // if(ts_reset_delay>=3'h6) + // ts_local_reset <= 1'b1; + ts_ready_reg_clr_del <= ts_ready_reg_clr; + + end +end + +always @(*) begin + if(~aRESETn) begin + // Synopsys TS register control logic + // Software definable + ts_irq_clear_reg = 1'b0; //Clear interrupt + ts_irq_enabled = 1'b0; //Enable interrupt + ts_run_reg = 1'b0; + ts_enable_reg = 1'b0; //Enable Temperature sensor + ts_run_continuous_reg = 1'b0; + ts_clk_div = 8'd24; + ts_ready_reg_clr = 1'b0; + + ts_sig_en = 1'b0; + ts_tm_an = 4'h0; + ts_cal = 1'b0; + PSLVERR_reg = 1'b0; + + ts_local_reset = 1'b0; + ts_run_clear = 1'b0; + ts_reset_delay = 3'h0; + ts_run_delay = 1'b0; + + end else begin + if(ts_run_continuous_reg) + ts_run_reg = 1'b1; + if(ts_run_clear) begin + ts_run_clear = 1'b0; + ts_run_reg = 1'b0; + end + if(ts_ready_reg_clr_del) begin + ts_ready_reg_clr = 1'b0; + end + if(~ts_run_continuous_reg & ts_run_reg) - ts_run_delay <= 1'b1; + ts_run_delay = 1'b1; if(ts_run_delay) begin - ts_run_delay <= 1'b0; - ts_run_clear <= 1'b1; + ts_run_delay = 1'b0; + ts_run_clear = 1'b1; end if(~ts_local_reset) - ts_reset_delay <= ts_reset_delay + 1'b1; + ts_reset_delay = ts_reset_delay + 1'b1; if(ts_reset_delay>=3'h6) - ts_local_reset <= 1'b1; + ts_local_reset = 1'b1; - end -end - -always @(*) begin case(apb_current_state) APB_IDLE: begin PSLVERR_reg = 1'b0; @@ -233,6 +261,7 @@ always @(*) begin end default: apb_next_state = APB_IDLE; endcase + end end assign PREADY = (apb_current_state==APB_READ|apb_current_state==APB_WRITE)? 1'b1:1'b0; @@ -270,10 +299,10 @@ mr74127 u_synopsys_ts( .dout10(ts_data[10]), // TS Data Out - bit 10 .dout11(ts_data[11]), // TS Data Out - bit 11 (MSB) .digo(), // TS Bitstream Out - .an_test0(ts_an_test[0]), // TS Analog test access - signal 0 - .an_test1(ts_an_test[1]), // TS Analog test access - signal 1 - .an_test2(ts_an_test[2]), // TS Analog test access - signal 2 - .an_test3(ts_an_test[3]), // TS Analog test access - signal 3 + .an_test0(ts_an_test_0), // TS Analog test access - signal 0 + .an_test1(ts_an_test_1), // TS Analog test access - signal 1 + .an_test2(ts_an_test_2), // TS Analog test access - signal 2 + .an_test3(ts_an_test_3), // TS Analog test access - signal 3 .vss_sense(ts_vss_sense) // vss sense (for cal) ); diff --git a/IP_wrappers/synopsys_VM_sensor_integration.v b/IP_wrappers/synopsys_VM_sensor_integration.v index bd04ceb18ffe35e53f2b18a01823b3c1746afaed..2c8e1b8ec3f74668e3d39a3437624b18c4b69659 100644 --- a/IP_wrappers/synopsys_VM_sensor_integration.v +++ b/IP_wrappers/synopsys_VM_sensor_integration.v @@ -17,4 +17,53 @@ module synopsys_VM_sensor_integration( ); + +mr74140 u_snps_VM( + .clk(), + .pd(), + .run(), + .rstn(), + .sde(1'b0), + .tm_se(), + .tm_si(), + .tm_tval(), + .tm_ld(), + .tm_te(), + .sel_vin0(), + .sel_vin1(), + .sel_vin2(), + .sel_vin3(), + .trim0(), + .trim1(), + .trim2(), + .trim3(), + .tm_a0(), + .tm_a1(), + .tm_a2(), + .tm_a3(), + .an_vm0(), + .an_vm1(), + .an_vm2(), + .an_vm3(), + .an_vm4(), + .an_vm5(), + .an_vm6(), + .an_vm7(), + .an_vref(), + .rdy(), + .dout0(), + .dout1(), + .dout2(), + .dout3(), + .dout4(), + .dout5(), + .dout6(), + .dout7(), + .dout8(), + .dout9(), + .dout10(), + .dout11(), + .tm_so() +); + endmodule