output reg cp_busy,
input cp_rnw,
output reg [31:0] cp_read = 0,
- input [31:0] cp_write);
+ input [31:0] cp_write
+`ifdef verilator
+`else
+ , output reg [8:0] sys_odata = 0,
+ input [8:0] sys_idata,
+ output reg sys_tookdata = 0
+`endif
+);
/* Terminal pretends to be cp5. */
reg towrite = 0;
$c("{extern void term_output(unsigned char d); term_output(",data,");}");
else if (didread || !indata[8])
indata = $c("({extern unsigned int term_input(); term_input();})");
+`else
+ always @(posedge clk)
+ begin
+ sys_odata = {towrite,data};
+ if (didread || !indata[8])
+ begin
+ indata = sys_idata;
+ sys_tookdata = 1;
+ end else
+ sys_tookdata = 0;
+ end
`endif
endmodule
`define BUS_ICACHE 1
`define BUS_DCACHE 0
-module System(input clk);
+module System(input clk
+`ifdef verilator
+`else
+ , output wire [8:0] sys_odata,
+ input [8:0] sys_idata,
+ output wire sys_tookdata
+`endif
+ );
+
wire [7:0] bus_req;
wire [7:0] bus_ack;
wire [31:0] bus_addr;
Terminal terminal(
.clk(clk),
.cp_req(cp_req), .cp_insn(cp_insn), .cp_ack(cp_ack_terminal), .cp_busy(cp_busy_terminal), .cp_rnw(cp_rnw),
- .cp_read(cp_read_terminal), .cp_write(cp_write));
+ .cp_read(cp_read_terminal), .cp_write(cp_write)
+`ifdef verilator
+`else
+ , .sys_odata(sys_odata), .sys_tookdata(sys_tookdata), .sys_idata(sys_idata)
+`endif
+ );
Writeback writeback(
.clk(clk),