Skip to content

Commit

Permalink
[*] rtlgen update: improved handling of bit width and allzero initial…
Browse files Browse the repository at this point in the history
…ization to provide compatiblity with vhdl (applied for system verilog). A lot of files are affected.
  • Loading branch information
sergeykhbr committed Nov 25, 2023
1 parent 75801bd commit 16ed9ac
Show file tree
Hide file tree
Showing 116 changed files with 2,672 additions and 2,672 deletions.
2 changes: 1 addition & 1 deletion sv/prj/common/vips/clk/vip_clk.sv
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
`timescale 1ns/10ps

module vip_clk #(
parameter realtime period = 1.0
parameter realtime period = 1
)
(
output logic o_clk
Expand Down
34 changes: 17 additions & 17 deletions sv/prj/common/vips/sdcard/vip_sdcard_cmdio.sv
Original file line number Diff line number Diff line change
Expand Up @@ -85,15 +85,15 @@ begin: comb_proc
logic v_crc7_in;
logic v_busy;

vb_cmd_txshift = 0;
v_crc7_clear = 0;
v_crc7_next = 0;
v_crc7_in = 0;
v_busy = 1'h1;
vb_cmd_txshift = '0;
v_crc7_clear = 1'b0;
v_crc7_next = 1'b0;
v_crc7_in = 1'b0;
v_busy = 1'b1;

v = r;

vb_cmd_txshift = {r.cmd_txshift[46: 0], 1'h1};
vb_cmd_txshift = {r.cmd_txshift[46: 0], 1'b1};
v_crc7_in = i_cmd;

if (i_cmd_req_ready == 1'b1) begin
Expand Down Expand Up @@ -124,14 +124,14 @@ begin: comb_proc
end
CMDSTATE_REQ_TXBIT: begin
v.cmd_state = CMDSTATE_REQ_CMD;
v.bitcnt = 6'h05;
v.bitcnt = 6'd5;
v_crc7_next = 1'b1;
v.txbit = i_cmd;
end
CMDSTATE_REQ_CMD: begin
v_crc7_next = 1'b1;
if ((|r.bitcnt) == 1'b0) begin
v.bitcnt = 6'h1f;
v.bitcnt = 6'd31;
v.cmd_state = CMDSTATE_REQ_ARG;
end else begin
v.bitcnt = (r.bitcnt - 1);
Expand All @@ -141,7 +141,7 @@ begin: comb_proc
v_crc7_next = 1'b1;
if ((|r.bitcnt) == 1'b0) begin
v.cmd_state = CMDSTATE_REQ_CRC7;
v.bitcnt = 6'h06;
v.bitcnt = 6'd6;
v.crc_calc = wb_crc7;
end else begin
v.bitcnt = (r.bitcnt - 1);
Expand Down Expand Up @@ -184,16 +184,16 @@ begin: comb_proc
v.cmd_resp_ready = 1'b0;
v.cmd_state = CMDSTATE_RESP;
if (r.spi_mode == 1'b0) begin
v.bitcnt = 6'h27;
vb_cmd_txshift = '0;
v.bitcnt = 6'd39;
vb_cmd_txshift = 48'd0;
vb_cmd_txshift[45: 40] = r.cmd_rxshift[45: 40];
vb_cmd_txshift[39: 8] = i_cmd_resp_data32;
vb_cmd_txshift[7: 0] = 8'hff;
end else begin
// Default R1 response in SPI mode:
v.bitcnt = 6'h07;
v.bitcnt = 6'd7;
vb_cmd_txshift = '1;
vb_cmd_txshift[47] = 1'h0;
vb_cmd_txshift[47] = 1'b0;
vb_cmd_txshift[46] = i_stat_err_parameter;
vb_cmd_txshift[45] = i_stat_err_address;
vb_cmd_txshift[44] = i_stat_err_erase_sequence;
Expand All @@ -202,7 +202,7 @@ begin: comb_proc
vb_cmd_txshift[41] = i_stat_erase_reset;
vb_cmd_txshift[40] = i_stat_idle_state;
if (i_cmd_resp_r2 == 1'b1) begin
v.bitcnt = 6'h0f;
v.bitcnt = 6'd15;
vb_cmd_txshift[39] = i_stat_out_of_range;
vb_cmd_txshift[38] = i_stat_erase_param;
vb_cmd_txshift[37] = i_stat_wp_violation;
Expand All @@ -212,7 +212,7 @@ begin: comb_proc
vb_cmd_txshift[33] = i_stat_wp_erase_skip;
vb_cmd_txshift[32] = i_stat_locked;
end else if ((i_cmd_resp_r3 == 1'b1) || (i_cmd_resp_r7 == 1'b1)) begin
v.bitcnt = 6'h27;
v.bitcnt = 6'd39;
vb_cmd_txshift[39: 8] = i_cmd_resp_data32;
end
end
Expand All @@ -222,9 +222,9 @@ begin: comb_proc
v_crc7_in = r.cmd_txshift[47];
if ((|r.bitcnt) == 1'b0) begin
if (r.spi_mode == 1'b0) begin
v.bitcnt = 6'h06;
v.bitcnt = 6'd6;
v.cmd_state = CMDSTATE_RESP_CRC7;
vb_cmd_txshift[47: 40] = {wb_crc7, 1'h1};
vb_cmd_txshift[47: 40] = {wb_crc7, 1'b1};
v.crc_calc = wb_crc7;
end else begin
v.cmd_state = CMDSTATE_RESP_STOPBIT;
Expand Down
28 changes: 14 additions & 14 deletions sv/prj/common/vips/sdcard/vip_sdcard_cmdio_pkg.sv
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@ package vip_sdcard_cmdio_pkg;

//
// Receiver CMD state:
localparam bit [3:0] CMDSTATE_REQ_STARTBIT = 4'h0;
localparam bit [3:0] CMDSTATE_REQ_TXBIT = 4'h1;
localparam bit [3:0] CMDSTATE_REQ_CMD = 4'h2;
localparam bit [3:0] CMDSTATE_REQ_ARG = 4'h3;
localparam bit [3:0] CMDSTATE_REQ_CRC7 = 4'h4;
localparam bit [3:0] CMDSTATE_REQ_STOPBIT = 4'h5;
localparam bit [3:0] CMDSTATE_REQ_VALID = 4'h6;
localparam bit [3:0] CMDSTATE_WAIT_RESP = 4'h7;
localparam bit [3:0] CMDSTATE_RESP = 4'h8;
localparam bit [3:0] CMDSTATE_RESP_CRC7 = 4'h9;
localparam bit [3:0] CMDSTATE_RESP_STOPBIT = 4'ha;
localparam bit [3:0] CMDSTATE_INIT = 4'hf;
localparam bit [3:0] CMDSTATE_REQ_STARTBIT = 4'd0;
localparam bit [3:0] CMDSTATE_REQ_TXBIT = 4'd1;
localparam bit [3:0] CMDSTATE_REQ_CMD = 4'd2;
localparam bit [3:0] CMDSTATE_REQ_ARG = 4'd3;
localparam bit [3:0] CMDSTATE_REQ_CRC7 = 4'd4;
localparam bit [3:0] CMDSTATE_REQ_STOPBIT = 4'd5;
localparam bit [3:0] CMDSTATE_REQ_VALID = 4'd6;
localparam bit [3:0] CMDSTATE_WAIT_RESP = 4'd7;
localparam bit [3:0] CMDSTATE_RESP = 4'd8;
localparam bit [3:0] CMDSTATE_RESP_CRC7 = 4'd9;
localparam bit [3:0] CMDSTATE_RESP_STOPBIT = 4'd10;
localparam bit [3:0] CMDSTATE_INIT = 4'd15;

typedef struct {
logic [7:0] clkcnt;
Expand All @@ -55,8 +55,8 @@ const vip_sdcard_cmdio_registers vip_sdcard_cmdio_r_reset = '{
'0, // clkcnt
1'b0, // cs
1'b0, // spi_mode
1'h1, // cmdz
1'h1, // cmd_dir
1'b1, // cmdz
1'b1, // cmd_dir
'1, // cmd_rxshift
'1, // cmd_txshift
CMDSTATE_INIT, // cmd_state
Expand Down
6 changes: 3 additions & 3 deletions sv/prj/common/vips/sdcard/vip_sdcard_crc7.sv
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,8 @@ begin: comb_proc
logic v_inv7;
logic [6:0] vb_crc7;

v_inv7 = 0;
vb_crc7 = 0;
v_inv7 = 1'b0;
vb_crc7 = '0;

v = r;

Expand All @@ -57,7 +57,7 @@ begin: comb_proc
vb_crc7[0] = v_inv7;

if (i_clear == 1'b1) begin
v.crc7 = '0;
v.crc7 = 7'd0;
end else if (i_next == 1'b1) begin
v.crc7 = vb_crc7;
end
Expand Down
76 changes: 38 additions & 38 deletions sv/prj/common/vips/sdcard/vip_sdcard_ctrl.sv
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@
module vip_sdcard_ctrl #(
parameter bit async_reset = 1'b0,
parameter int CFG_SDCARD_POWERUP_DONE_DELAY = 450, // Delay of busy bits in ACMD41 response
parameter logic CFG_SDCARD_HCS = 1'h1, // High Capacity Support
parameter logic CFG_SDCARD_HCS = 1'b1, // High Capacity Support
parameter logic [3:0] CFG_SDCARD_VHS = 4'h1, // CMD8 Voltage supply mask
parameter logic CFG_SDCARD_PCIE_1_2V = 1'h0,
parameter logic CFG_SDCARD_PCIE_AVAIL = 1'h0,
parameter logic CFG_SDCARD_PCIE_1_2V = 1'b0,
parameter logic CFG_SDCARD_PCIE_AVAIL = 1'b0,
parameter logic [23:0] CFG_SDCARD_VDD_VOLTAGE_WINDOW = 24'hff8000
)
(
Expand Down Expand Up @@ -63,8 +63,8 @@ begin: comb_proc
logic v_resp_valid;
logic [31:0] vb_resp_data32;

v_resp_valid = 0;
vb_resp_data32 = 0;
v_resp_valid = 1'b0;
vb_resp_data32 = '0;

v = r;

Expand All @@ -89,30 +89,30 @@ begin: comb_proc
case (r.sdstate)
SDSTATE_IDLE: begin
case (i_cmd_req_cmd)
6'h00: begin // CMD0: GO_IDLE_STATE.
6'd0: begin // CMD0: GO_IDLE_STATE.
v.cmd_resp_valid = 1'b1;
vb_resp_data32 = '0;
v.delay_cnt = 32'h00000014;
vb_resp_data32 = 32'd0;
v.delay_cnt = 32'd20;
end
6'h08: begin // CMD8: SEND_IF_COND.
6'd8: begin // CMD8: SEND_IF_COND.
// Send memory Card interface condition:
// [21] PCIe 1.2V support
// [20] PCIe availability
// [19:16] Voltage supply
// [15:8] check pattern
v.cmd_resp_valid = 1'b1;
v.cmd_resp_r7 = 1'b1;
v.delay_cnt = 32'h00000014;
v.delay_cnt = 32'd20;
vb_resp_data32[13] = (i_cmd_req_data[13] & CFG_SDCARD_PCIE_1_2V);
vb_resp_data32[12] = (i_cmd_req_data[12] & CFG_SDCARD_PCIE_AVAIL);
vb_resp_data32[11: 8] = (i_cmd_req_data[11: 8] & CFG_SDCARD_VHS);
vb_resp_data32[7: 0] = i_cmd_req_data[7: 0];
end
6'h37: begin // CMD55: APP_CMD.
6'd55: begin // CMD55: APP_CMD.
v.cmd_resp_valid = 1'b1;
vb_resp_data32 = '0;
vb_resp_data32 = 32'd0;
end
6'h29: begin // ACMD41: SD_SEND_OP_COND.
6'd41: begin // ACMD41: SD_SEND_OP_COND.
// Send host capacity info:
// [39] BUSY, active LOW
// [38] HCS (OCR[30]) Host Capacity
Expand All @@ -122,38 +122,38 @@ begin: comb_proc
v.ocr_hcs = (i_cmd_req_data[30] & CFG_SDCARD_HCS);
v.ocr_vdd_window = (i_cmd_req_data[23: 0] & CFG_SDCARD_VDD_VOLTAGE_WINDOW);
v.cmd_resp_valid = 1'b1;
v.delay_cnt = 32'h00000014;
v.delay_cnt = 32'd20;
vb_resp_data32[31] = r.powerup_done;
vb_resp_data32[30] = (i_cmd_req_data[30] & CFG_SDCARD_HCS);
vb_resp_data32[23: 0] = (i_cmd_req_data[23: 0] & CFG_SDCARD_VDD_VOLTAGE_WINDOW);
if ((i_cmd_req_data[23: 0] & CFG_SDCARD_VDD_VOLTAGE_WINDOW) == 24'h000000) begin
if ((i_cmd_req_data[23: 0] & CFG_SDCARD_VDD_VOLTAGE_WINDOW) == 24'd0) begin
// OCR check failed:
v.sdstate = SDSTATE_INA;
end else if ((i_spi_mode == 1'b0) && (r.powerup_done == 1'b1)) begin
// SD mode only
v.sdstate = SDSTATE_READY;
end
end
6'h3a: begin // CMD58: READ_OCR.
6'd58: begin // CMD58: READ_OCR.
v.cmd_resp_valid = 1'b1;
v.cmd_resp_r7 = 1'b1;
v.delay_cnt = 32'h00000014;
v.delay_cnt = 32'd20;
if (i_spi_mode == 1'b1) begin
vb_resp_data32 = '0;
vb_resp_data32 = 32'd0;
vb_resp_data32[31] = r.powerup_done;
vb_resp_data32[30] = r.ocr_hcs;
vb_resp_data32[23: 0] = r.ocr_vdd_window;
end else begin
v.illegal_cmd = 1'b1;
end
end
6'h11: begin // CMD17: READ_SINGLE_BLOCK.
6'd17: begin // CMD17: READ_SINGLE_BLOCK.
v.cmd_resp_valid = 1'b1;
v.delay_cnt = 32'h00000014;
v.delay_cnt = 32'd20;
if (i_spi_mode == 1'b1) begin
v.req_mem_valid = 1'b1;
v.req_mem_addr = {i_cmd_req_data, 9'h000};
vb_resp_data32 = '0;
v.req_mem_addr = {i_cmd_req_data, 9'd0};
vb_resp_data32 = 32'd0;
end else begin
v.illegal_cmd = 1'b1;
end
Expand All @@ -168,20 +168,20 @@ begin: comb_proc
end
SDSTATE_READY: begin
case (i_cmd_req_cmd)
6'h00: begin // CMD0: GO_IDLE_STATE.
6'd0: begin // CMD0: GO_IDLE_STATE.
v.cmd_resp_valid = 1'b1;
vb_resp_data32 = '0;
v.delay_cnt = 32'h00000002;
vb_resp_data32 = 32'd0;
v.delay_cnt = 32'd2;
v.sdstate = SDSTATE_IDLE;
end
6'h02: begin // CMD2: .
6'd2: begin // CMD2: .
v.cmd_resp_valid = 1'b1;
v.delay_cnt = 32'h00000001;
v.delay_cnt = 32'd1;
v.sdstate = SDSTATE_IDENT;
end
6'h0b: begin // CMD11: .
6'd11: begin // CMD11: .
v.cmd_resp_valid = 1'b1;
v.delay_cnt = 32'h00000001;
v.delay_cnt = 32'd1;
end
default: begin
// Illegal commands in 'ready' state:
Expand All @@ -193,15 +193,15 @@ begin: comb_proc
end
SDSTATE_IDENT: begin
case (i_cmd_req_cmd)
6'h00: begin // CMD0: GO_IDLE_STATE.
6'd0: begin // CMD0: GO_IDLE_STATE.
v.cmd_resp_valid = 1'b1;
vb_resp_data32 = '0;
v.delay_cnt = 32'h00000002;
vb_resp_data32 = 32'd0;
v.delay_cnt = 32'd2;
v.sdstate = SDSTATE_IDLE;
end
6'h03: begin // CMD3: .
6'd3: begin // CMD3: .
v.cmd_resp_valid = 1'b1;
v.delay_cnt = 32'h00000001;
v.delay_cnt = 32'd1;
v.sdstate = SDSTATE_STBY;
end
default: begin
Expand Down Expand Up @@ -231,7 +231,7 @@ begin: comb_proc
endcase
end

v.shiftdat = {r.shiftdat[14: 0], 1'h1};
v.shiftdat = {r.shiftdat[14: 0], 1'b1};
case (r.datastate)
DATASTATE_IDLE: begin
v.crc16_clear = 1'b1;
Expand All @@ -241,7 +241,7 @@ begin: comb_proc
v.req_mem_valid = 1'b0;
v.datastate = DATASTATE_START;
v.shiftdat = 16'hfe00;
v.bitcnt = '0;
v.bitcnt = 13'd0;
v.dat_trans = 1'b1;
end
end
Expand All @@ -250,10 +250,10 @@ begin: comb_proc
if ((&r.bitcnt[2: 0]) == 1'b1) begin
v.crc16_clear = 1'b0;
v.crc16_next = 1'b1;
if (r.bitcnt[12: 3] == 10'h200) begin
if (r.bitcnt[12: 3] == 10'd512) begin
v.datastate = DATASTATE_CRC15;
v.shiftdat = i_crc16;
v.bitcnt = '0;
v.bitcnt = 13'd0;
v.crc16_next = 1'b0;
end else begin
// Read memory byte:
Expand Down
28 changes: 14 additions & 14 deletions sv/prj/common/vips/sdcard/vip_sdcard_ctrl_pkg.sv
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,22 @@ package vip_sdcard_ctrl_pkg;

//
// SD-card states (see Card Status[12:9] CURRENT_STATE on page 145)
localparam bit [3:0] SDSTATE_IDLE = 4'h0;
localparam bit [3:0] SDSTATE_READY = 4'h1;
localparam bit [3:0] SDSTATE_IDENT = 4'h2;
localparam bit [3:0] SDSTATE_STBY = 4'h3;
localparam bit [3:0] SDSTATE_TRAN = 4'h4;
localparam bit [3:0] SDSTATE_DATA = 4'h5;
localparam bit [3:0] SDSTATE_RCV = 4'h6;
localparam bit [3:0] SDSTATE_PRG = 4'h7;
localparam bit [3:0] SDSTATE_DIS = 4'h8;
localparam bit [3:0] SDSTATE_INA = 4'h9;
localparam bit [3:0] SDSTATE_IDLE = 4'd0;
localparam bit [3:0] SDSTATE_READY = 4'd1;
localparam bit [3:0] SDSTATE_IDENT = 4'd2;
localparam bit [3:0] SDSTATE_STBY = 4'd3;
localparam bit [3:0] SDSTATE_TRAN = 4'd4;
localparam bit [3:0] SDSTATE_DATA = 4'd5;
localparam bit [3:0] SDSTATE_RCV = 4'd6;
localparam bit [3:0] SDSTATE_PRG = 4'd7;
localparam bit [3:0] SDSTATE_DIS = 4'd8;
localparam bit [3:0] SDSTATE_INA = 4'd9;

// Data block access state machine:
localparam bit [2:0] DATASTATE_IDLE = 3'h0;
localparam bit [2:0] DATASTATE_START = 3'h1;
localparam bit [2:0] DATASTATE_CRC15 = 3'h2;
localparam bit [2:0] DATASTATE_STOP = 3'h3;
localparam bit [2:0] DATASTATE_IDLE = 3'd0;
localparam bit [2:0] DATASTATE_START = 3'd1;
localparam bit [2:0] DATASTATE_CRC15 = 3'd2;
localparam bit [2:0] DATASTATE_STOP = 3'd3;

typedef struct {
logic [3:0] sdstate;
Expand Down
Loading

0 comments on commit 16ed9ac

Please sign in to comment.