Hazard3/test/formal/bus_compliance_1port/tb.v

133 lines
4.2 KiB
Coq
Raw Normal View History

// Assume bus responses are well-formed, assert that bus requests are
// well-formed.
module tb;
reg clk;
reg rst_n = 1'b0;
always @ (posedge clk)
rst_n <= 1'b1;
// ----------------------------------------------------------------------------
// DUT
(* keep *) wire [31:0] ahblm_haddr;
(* keep *) wire ahblm_hwrite;
(* keep *) wire ahblm_hexcl;
(* keep *) wire [1:0] ahblm_htrans;
(* keep *) wire [2:0] ahblm_hsize;
(* keep *) wire [2:0] ahblm_hburst;
(* keep *) wire [3:0] ahblm_hprot;
(* keep *) wire ahblm_hmastlock;
(* keep *) wire ahblm_hready;
(* keep *) wire ahblm_hexokay;
(* keep *) wire ahblm_hresp;
(* keep *) wire [31:0] ahblm_hwdata;
(* keep *) wire [31:0] ahblm_hrdata;
localparam W_DATA = 32;
(* keep *) wire dbg_req_halt;
(* keep *) wire dbg_req_halt_on_reset;
(* keep *) wire dbg_req_resume;
(* keep *) wire dbg_halted;
(* keep *) wire dbg_running;
(* keep *) wire [W_DATA-1:0] dbg_data0_rdata;
(* keep *) wire [W_DATA-1:0] dbg_data0_wdata;
(* keep *) wire dbg_data0_wen;
(* keep *) wire [W_DATA-1:0] dbg_instr_data;
(* keep *) wire dbg_instr_data_vld;
(* keep *) wire dbg_instr_data_rdy;
(* keep *) wire dbg_instr_caught_exception;
(* keep *) wire dbg_instr_caught_ebreak;
(* keep *) wire [31:0] irq;
(* keep *) wire soft_irq;
(* keep *) wire timer_irq;
hazard3_cpu_1port dut (
.clk (clk),
.rst_n (rst_n),
.ahblm_haddr (ahblm_haddr),
.ahblm_hwrite (ahblm_hwrite),
.ahblm_hexcl (ahblm_hexcl),
.ahblm_htrans (ahblm_htrans),
.ahblm_hsize (ahblm_hsize),
.ahblm_hburst (ahblm_hburst),
.ahblm_hprot (ahblm_hprot),
.ahblm_hmastlock (ahblm_hmastlock),
.ahblm_hready (ahblm_hready),
.ahblm_hexokay (ahblm_hexokay),
.ahblm_hresp (ahblm_hresp),
.ahblm_hwdata (ahblm_hwdata),
.ahblm_hrdata (ahblm_hrdata),
.dbg_req_halt (dbg_req_halt),
.dbg_req_halt_on_reset (dbg_req_halt_on_reset),
.dbg_req_resume (dbg_req_resume),
.dbg_halted (dbg_halted),
.dbg_running (dbg_running),
.dbg_data0_rdata (dbg_data0_rdata),
.dbg_data0_wdata (dbg_data0_wdata),
.dbg_data0_wen (dbg_data0_wen),
.dbg_instr_data (dbg_instr_data),
.dbg_instr_data_vld (dbg_instr_data_vld),
.dbg_instr_data_rdy (dbg_instr_data_rdy),
.dbg_instr_caught_exception (dbg_instr_caught_exception),
.dbg_instr_caught_ebreak (dbg_instr_caught_ebreak),
.irq (irq),
.soft_irq (soft_irq),
.timer_irq (timer_irq)
);
// ----------------------------------------------------------------------------
// Bus properties
// -1 -> unconstrained, >=0 -> max length
localparam MAX_BUS_STALL = -1;
ahbl_slave_assumptions #(
.MAX_BUS_STALL (MAX_BUS_STALL)
) d_assumptions (
.clk (clk),
.rst_n (rst_n),
.dst_hready_resp (ahblm_hready),
.dst_hready (ahblm_hready),
.dst_hresp (ahblm_hresp),
.dst_hexokay (ahblm_hexokay),
.dst_haddr (ahblm_haddr),
.dst_hwrite (ahblm_hwrite),
.dst_htrans (ahblm_htrans),
.dst_hsize (ahblm_hsize),
.dst_hburst (ahblm_hburst),
.dst_hprot (ahblm_hprot),
.dst_hmastlock (ahblm_hmastlock),
.dst_hexcl (ahblm_hexcl),
.dst_hwdata (ahblm_hwdata),
.dst_hrdata (ahblm_hrdata)
);
ahbl_master_assertions d_assertions (
.clk (clk),
.rst_n (rst_n),
.src_hready (ahblm_hready),
.src_hresp (ahblm_hresp),
.src_hexokay (ahblm_hexokay),
.src_haddr (ahblm_haddr),
.src_hwrite (ahblm_hwrite),
.src_htrans (ahblm_htrans),
.src_hsize (ahblm_hsize),
.src_hburst (ahblm_hburst),
.src_hprot (ahblm_hprot),
.src_hmastlock (ahblm_hmastlock),
.src_hexcl (ahblm_hexcl),
.src_hwdata (ahblm_hwdata),
.src_hrdata (ahblm_hrdata)
);
endmodule