OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [rtl/] [src_peripheral/] [jtag/] [jtag_simulation/] [jtag_wb_test/] [verilog/] [BSCANE2_sim.v] - Rev 48

Compare with Previous | Blame | View Log

// synthesis translate_off
`timescale 1ns / 1ps
// synthesis translate_on
 
module BSCANE2_sim # (
parameter   JTAG_CHAIN  =4
)(
     output CAPTURE, // 1-bit output: CAPTURE output from TAP controller.
     output DRCK, // 1-bit output: Gated TCK output. When SEL is asserted, DRCK toggles when CAPTURE or SHIFT are asserted.
     output RESET, // 1-bit output: Reset output for TAP controller.
     output RUNTEST, // 1-bit output: Output asserted when TAP controller is in Run Test/Idle state.
     output SEL, // 1-bit output: USER instruction active output.
     output SHIFT, // 1-bit output: SHIFT output from TAP controller.
     output TCK, // 1-bit output: Test Clock output. Fabric connection to TAP Clock pin.
     output TDI, // 1-bit output: Test Data Input (TDI) output from TAP controller.
     output TMS, // 1-bit output: Test Mode Select output. Fabric connection to TAP.
     output UPDATE, // 1-bit output: UPDATE output from TAP controller
     input  TDO // 1-bit input: Test Data Output (TDO) input for USER function.
);
 
 
    wire    [2:0]  ir_out;
    wire    tdo;
    wire    [2:0]  ir_in;
    wire    tck;
    wire    tdi;
    wire    virtual_state_cdr;
    wire    virtual_state_cir;
    wire    virtual_state_e1dr;
    wire    virtual_state_e2dr;
    wire    virtual_state_pdr;
    wire    virtual_state_sdr;
    wire    virtual_state_udr;
    wire    virtual_state_uir;
 
 
    assign CAPTURE = virtual_state_cdr;
    assign DRCK = tck & (SEL & (CAPTURE | SHIFT)); // I am not using it. So I am not sure if the definition is correct
    assign RESET=1'b0;
    assign RUNTEST = 1'b0; // not used
    assign SEL = virtual_state_cdr | virtual_state_sdr | virtual_state_udr;
    assign SHIFT=virtual_state_sdr;
    assign TCK = tck;
    assign TDI = tdi;  
    assign TMS=1'b0;//not used by me
    assign UPDATE = virtual_state_udr;
    assign tdo = TDO;
 
    assign ir_out =ir_in;
    vjtag_sim #(
 
    	.VJTAG_INDEX(0)
    )
    the_vjtag_sim
    (
    	.ir_out(ir_out),
    	.tdo(tdo),
    	.ir_in(ir_in),
    	.tck(tck),
    	.tdi(tdi),
    	.virtual_state_cdr(virtual_state_cdr),
    	.virtual_state_cir(virtual_state_cir),
    	.virtual_state_e1dr(virtual_state_e1dr),
    	.virtual_state_e2dr(virtual_state_e2dr),
    	.virtual_state_pdr(virtual_state_pdr),
    	.virtual_state_sdr(virtual_state_sdr),
    	.virtual_state_udr(virtual_state_udr),
    	.virtual_state_uir(virtual_state_uir)
    );
 
 
 
endmodule
 
 
 
module vjtag_sim 
(
	ir_out,
	tdo,
	ir_in,
	tck,
	tdi,
	virtual_state_cdr,
	virtual_state_cir,
	virtual_state_e1dr,
	virtual_state_e2dr,
	virtual_state_pdr,
	virtual_state_sdr,
	virtual_state_udr,
	virtual_state_uir);
 
	input	[2:0]  ir_out;
	input	  tdo;
	output	[2:0]  ir_in;
	output	  tck;
	output	  tdi;
	output	  virtual_state_cdr;
	output	  virtual_state_cir;
	output	  virtual_state_e1dr;
	output	  virtual_state_e2dr;
	output	  virtual_state_pdr;
	output	  virtual_state_sdr;
	output	  virtual_state_udr;
	output	  virtual_state_uir;
 
	wire  sub_wire0;
	wire  sub_wire1;
	wire [2:0] sub_wire2;
	wire  sub_wire3;
	wire  sub_wire4;
	wire  sub_wire5;
	wire  sub_wire6;
	wire  sub_wire7;
	wire  sub_wire8;
	wire  sub_wire9;
	wire  sub_wire10;
	wire  virtual_state_cir = sub_wire0;
	wire  virtual_state_pdr = sub_wire1;
	wire [2:0] ir_in = sub_wire2[2:0];
	wire  tdi = sub_wire3;
	wire  virtual_state_udr = sub_wire4;
	wire  tck = sub_wire5;
	wire  virtual_state_e1dr = sub_wire6;
	wire  virtual_state_uir = sub_wire7;
	wire  virtual_state_cdr = sub_wire8;
	wire  virtual_state_e2dr = sub_wire9;
	wire  virtual_state_sdr = sub_wire10;
 
 
	parameter  VJTAG_INDEX=0;	
 
	/* 
    parameter SIM_ACTION = "((0,1,7,3),(0,2,ff,20),(0,1,6,3),(0,2,ffffffff,20),(0,2,1,20),(0,2,2,20),(0,2,3,20),(0,2,4,20))",  
    parameter SIM_N_SCAN=8,
    parameter SIM_SIM_LENGTH=198
	*/
    `define INCLUDE_SIM_INPUT
    `include "jtag_sim_input.v"
 
	sld_virtual_jtag	sld_virtual_jtag_component (
				.ir_out (ir_out),
				.tdo (tdo),
				.virtual_state_cir (sub_wire0),
				.virtual_state_pdr (sub_wire1),
				.ir_in (sub_wire2),
				.tdi (sub_wire3),
				.virtual_state_udr (sub_wire4),
				.tck (sub_wire5),
				.virtual_state_e1dr (sub_wire6),
				.virtual_state_uir (sub_wire7),
				.virtual_state_cdr (sub_wire8),
				.virtual_state_e2dr (sub_wire9),
				.virtual_state_sdr (sub_wire10)
				// synopsys translate_off
				,
				.jtag_state_cdr (),
				.jtag_state_cir (),
				.jtag_state_e1dr (),
				.jtag_state_e1ir (),
				.jtag_state_e2dr (),
				.jtag_state_e2ir (),
				.jtag_state_pdr (),
				.jtag_state_pir (),
				.jtag_state_rti (),
				.jtag_state_sdr (),
				.jtag_state_sdrs (),
				.jtag_state_sir (),
				.jtag_state_sirs (),
				.jtag_state_tlr (),
				.jtag_state_udr (),
				.jtag_state_uir (),
				.tms ()
				// synopsys translate_on
				);
 
 
	defparam
		sld_virtual_jtag_component.sld_auto_instance_index = "NO",
		sld_virtual_jtag_component.sld_instance_index = VJTAG_INDEX,
		sld_virtual_jtag_component.sld_ir_width = 3,
		sld_virtual_jtag_component.sld_sim_action = SIM_ACTION,
		sld_virtual_jtag_component.sld_sim_n_scan = SIM_N_SCAN,
		sld_virtual_jtag_component.sld_sim_total_length = SIM_LENGTH;
 
 
endmodule
 
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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