Email: bknpk@hotmail.com Phone: +972-54-7649119


V

 

ASIC/FPGA Design and Verification Out Source Services

This page shows a simple example of mirroring some verilog signals into a vhdl test-bench, using ncsim simulator.

  1. When I worked on a large sub-system project, I needed to inspect some verilog signals. Since this project is a mixed language one, where most of the code, including the test-bench, is written in VHDL, I had two options to let specman read the DUT internal signals.

  2. I could constraint, in the specman code, the agent attribute of this new module to Verilog and access the signals via specman ports. Multiple agent environment, however, requires creating and adding another stub, for verilog signals. This means a relative large effort to understand the environment existing compilation scripts and therefor I did not like this option.

  3. Mirroring the signals from a verilog module, deep in the DUT path into the test-bench, looks promising. All that it requires, is the usage of a special VHDL library from the vendor.


  4. --Pini to mirror verilog signals
    library NCUTILS;
    use NCUTILS.ncutilities.all;
    ...
    ARCHITECTURE top OF enet_tb IS
      --------------------------------------------------------------
      -- Component declaration
      --------------------------------------------------------------
      
      -- Specman stubs file
      COMPONENT specman_reference
      END COMPONENT;


    --Pini to mirror verilog signals
    --conv 32 to 10
    signal cov_step_cnt : std_logic_vector(1 DOWNTO 0);
    signal cov_xoff_in : std_logic;
    signal cov_empty : std_logic;
    ...
    BEGIN
      --Pini to mirror verilog signals
      nc_mirror(
        source => ":DUT:uart_gen(0):uart_inst:_dftw_inst:core_inst:const:inst_drv:step_cnt",
        destination => "cov_step_cnt",
        verbose => ""
      );
      nc_mirror(
        source => ":DUT:uart_gen(0):uart_inst:_dftw_inst:core_inst:const:inst_drv:xoff_in",
        destination => "cov_xoff_in",
        verbose => ""
      );
      nc_mirror(
        source => ":DUT:uart_gen(0):uart_inst:_dftw_inst:core_inst:const:inst_drv:empty",
        destination => "cov_empty",
        verbose => ""
      --verbose => "verbose"
      );


  5. Note: You want to leave the verbose empty, otherwise, in verbose mode, you get a lot of messages in the log file.

Contact me now at:

  ...


I would be happy to offer my services. Call ASAP !


Home

SD slave CRC16 calculation in VHDL.


Text to Integer specman code


Download Area






Search This Site


Feedback This Site




new pages on this site