OpenCores
URL https://opencores.org/ocsvn/openmsp430/openmsp430/trunk

Subversion Repositories openmsp430

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openmsp430/trunk/core/bench/verilog
    from Rev 192 to Rev 200
    Reverse comparison

Rev 192 → Rev 200

/tb_openMSP430.v
21,9 → 21,9
// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
//
//----------------------------------------------------------------------------
//
//
// *File Name: tb_openMSP430.v
//
//
// *Module Description:
// openMSP430 testbench
//
101,13 → 101,6
wire [15:0] per_dout_temp_8b;
wire [15:0] per_dout_temp_16b;
 
// Simple full duplex UART
wire [15:0] per_dout_uart;
wire irq_uart_rx;
wire irq_uart_tx;
wire uart_txd;
reg uart_rxd;
 
// Timer A
wire irq_ta0;
wire irq_ta1;
126,7 → 119,7
wire ta_out1_en;
wire ta_out2;
wire ta_out2_en;
 
// Clock / Reset & Interrupts
reg dco_clk;
wire dco_enable;
150,7 → 143,7
reg cpu_en;
reg [13:0] wkup;
wire [13:0] wkup_in;
 
// Scan (ASIC version only)
reg scan_enable;
reg scan_mode;
196,8 → 189,9
wire [31:0] inst_number;
wire [15:0] inst_pc;
wire [8*32-1:0] inst_short;
 
// Testbench variables
integer tb_idx;
integer error;
reg stimulus_done;
 
213,21 → 207,24
`include "dbg_uart_tasks.v"
`include "dbg_i2c_tasks.v"
 
// Simple uart tasks
//`include "uart_tasks.v"
 
// Verilog stimulus
`include "stimulus.v"
 
 
//
// Initialize ROM
// Initialize Memory
//------------------------------
initial
begin
// Initialize data memory
for (tb_idx=0; tb_idx < `DMEM_SIZE/2; tb_idx=tb_idx+1)
dmem_0.mem[tb_idx] = 16'h0000;
 
// Initialize program memory
#10 $readmemh("./pmem.mem", pmem_0.mem);
end
 
 
//
// Generate Clock & Reset
//------------------------------
305,12 → 302,11
ta_cci1b = 1'b0;
ta_cci2a = 1'b0;
ta_cci2b = 1'b0;
uart_rxd = 1'b1;
scan_enable = 1'b0;
scan_mode = 1'b0;
end
 
 
//
// Program Memory
//----------------------------------
444,7 → 440,7
.p6_dout_en (p6_dout_en), // Port 6 data output enable
.p6_sel (p6_sel), // Port 6 function select
.per_dout (per_dout_dio), // Peripheral data output
 
// INPUTs
.mclk (mclk), // Main system clock
.p1_din (p1_din), // Port 1 data input
497,36 → 493,8
.ta_cci2b (ta_cci2b), // Timer A compare 2 input B
.taclk (taclk) // TACLK external timer clock (SLOW)
);
//
// Simple full duplex UART (8N1 protocol)
//----------------------------------------
`ifdef READY_FOR_PRIMETIME
omsp_uart #(.BASE_ADDR(15'h0080)) uart_0 (
 
// OUTPUTs
.irq_uart_rx (irq_uart_rx), // UART receive interrupt
.irq_uart_tx (irq_uart_tx), // UART transmit interrupt
.per_dout (per_dout_uart), // Peripheral data output
.uart_txd (uart_txd), // UART Data Transmit (TXD)
 
// INPUTs
.mclk (mclk), // Main system clock
.per_addr (per_addr), // Peripheral address
.per_din (per_din), // Peripheral data input
.per_en (per_en), // Peripheral enable (high active)
.per_we (per_we), // Peripheral write enable (high active)
.puc_rst (puc_rst), // Main system reset
.smclk_en (smclk_en), // SMCLK enable (from CPU)
.uart_rxd (uart_rxd) // UART Data Receive (RXD)
);
`else
assign irq_uart_rx = 1'b0;
assign irq_uart_tx = 1'b0;
assign per_dout_uart = 16'h0000;
assign uart_txd = 1'b0;
`endif
 
//
// Peripheral templates
//----------------------------------
569,7 → 537,6
 
assign per_dout = per_dout_dio |
per_dout_timerA |
per_dout_uart |
per_dout_temp_8b |
per_dout_temp_16b;
 
584,8 → 551,8
1'b0, // Vector 10 (0xFFF4) - Watchdog -
irq_ta0, // Vector 9 (0xFFF2)
irq_ta1, // Vector 8 (0xFFF0)
irq_uart_rx, // Vector 7 (0xFFEE)
irq_uart_tx, // Vector 6 (0xFFEC)
1'b0, // Vector 7 (0xFFEE)
1'b0, // Vector 6 (0xFFEC)
1'b0, // Vector 5 (0xFFEA)
1'b0, // Vector 4 (0xFFE8)
irq_port2, // Vector 3 (0xFFE6)
615,8 → 582,8
 
// I2C Bus
//.........................
pullup dbg_scl_inst (dbg_scl);
pullup dbg_sda_inst (dbg_sda);
pullup dbg_scl_inst (dbg_scl);
pullup dbg_sda_inst (dbg_sda);
 
// I2C Slave (openMSP430)
//.........................
626,7 → 593,7
.data_out_en (1'b0), // Output enable
.data_out (1'b0) // Output
);
 
io_cell sda_slave_inst (
.pad (dbg_sda), // I/O pad
.data_in (dbg_sda_slave_in), // Input
642,7 → 609,7
.data_out_en (!dbg_scl_master), // Output enable
.data_out (1'b0) // Output
);
 
io_cell sda_master_inst (
.pad (dbg_sda), // I/O pad
.data_in (dbg_sda_master_in), // Input
703,10 → 670,10
`else
`ifdef VERY_LONG_TIMEOUT
#500000000;
`else
`else
`ifdef LONG_TIMEOUT
#5000000;
`else
`else
#500000;
`endif
`endif
722,7 → 689,7
begin
@(negedge stimulus_done);
wait(inst_pc=='hffff);
 
$display(" ===============================================");
if (error!=0)
begin
734,7 → 701,7
$display("| SIMULATION FAILED |");
$display("| (the verilog stimulus didn't complete) |");
end
else
else
begin
$display("| SIMULATION PASSED |");
end

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.