• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Functional Verification
  3. Running "small environment" on specview

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 65
  • Views 3523
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Running "small environment" on specview

Nir Z
Nir Z over 3 years ago

Hi all,

I'm new in the functional verification "world" and I'm trying to create a small environment where i can test my code easily.

For that i wrote a simple code, where I generate a clock for my simulation.

Important to mention - I'm not connected to a DUT at this point because i want to create an easy "playground".

The problem is I'm receiving the next message:

"

*** Warning: ERR_TE_NOSIM: No simulator is attached.
Therefore, '@sim' and 'delay' temporal expressions will never occur.

"

The following is the code:

<'

extend sys {


event clk;
tcm_test() @clk is {
     print sys.time;
     wait [10]*cycle;
     print sys.time;
};


gen_clk() @sys.any is {
      while TRUE{
            message(LOW,"Wait delay");
            wait delay(4*(1 ns)); 
            emit clk;
            };
};

run() is also {
      print ("hello");
      start tcm_test();
};

run() is also {
      start gen_clk();
};


};

'>

Thank you for your help,

Nir

  • Cancel
  • StephenH
    StephenH over 3 years ago

    The philosophy around clocks in Specman was that it's more efficient to generate them in the HDL simulator and have Specman components as slaves to that clock, it's more performant that way. It also avoids the complexity of having to build a separate timing engine inside the Specman core - delays are simply sent to the simulator for processing. This is why you see the warning about @sim and delay statements not being honoured.

    The simplest way to get running would be to write a tiny SV harness to generate a clock:

    module tb;
    bit clk;
    always #1 clk = ~clk;
    endmodule

    compile that with "xrun tb.sv -snload top.e" (assuming you called your top Specman file top.e) and off you go.

    The more complex way to make a stand-alone Specman testbench is to redefine the clocking events for the components,using a special pattern for standalone mode.

    You'll want to reference the docs here: https://support.cadence.com/apex/techpubDocViewerPage?xmlName=sn_run.xml&title=Compiling,%20Linking,%20and%20Running%20Specman%20--%20Running%20Specman%20Standalone%20-%20Running%20Specman%20Standalone&hash=&c_version=21.09&path=sn_run/sn_run21.09/Running_Specman_Standalone.html 
    but I've pasted the most relevant part for you here, for convenience.

    2.3. Defining a Clock for Standalone Specman

    To exercise and debug the TCMs in your e code without a simulator, you probably also need to define a standalone clock.

    In standalone Specman operation (that is, with no simulator attached), the sys.any event is the only one that occurs automatically. It typically is used as the clock for standalone operation.

    For example, you may have defined the clock that drives the system when linked with a simulator as follows:

    <'
    extend sys {
      event clk is rise('top.clk')@sim; // clk drives the system
    };
    '>

    In this case, you need to use extend to override the clock to tie it to sys.any for standalone operation.

    <'
    extend sys {
      event clk is only cycle @sys.any;
    };
    '>

    If the TCM you want to exercise waits on other signals from the DUT, such as:

    wait until rise('~/top/cpu/s_fetch1')@clk;

    You will also need to set those signals to appropriate values.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Nir Z
    Nir Z over 3 years ago in reply to StephenH

    Thank you for the respawn,

    I did create the tb file as you mentioned and I wrote a the e code. I'm still encountering the same issue (RR_TE_NOSIM: No simulator is attached) and I wanted to ask if the problem is using the specview instead of different environment, if not, can you direct to my mistake in the code?

    This is the code I wrote:

    <'

    unit clock_driver {
        clk: inout simple_port of bit is instance;
        keep bind (clk, external);
        keep soft clk.hdl_path() == "clk";

    };


    extend sys {
    // creating the connection to the tb
        clock_driver_i: clock_driver is instance;
        keep clock_driver_i.hdl_path() == "~/tb";

    // event for
        event clk is rise(clock_driver_i.clk$)@sim;

    // TCM for test.
        tcm_test() @clk is {
            print sys.time;
            wait [10]*cycle;
            print sys.time;
        };


        run() is also {
            print ("start run");
            start tcm_test();
        };
    };

    '>

    Thanks a lot,

    Nir

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • StephenH
    StephenH over 3 years ago in reply to Nir Z

    What command are you using to launch the tool?

    The xrun command that I gave you should work fine, and you can get GUI mode by simply adding -gui to that command.

    My recollection was that specview was deprecated some years ago, in favour of the native integration of Specman into the SimVision GUI. I honestly can't remember the last time I ran specview! :-/

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Nir Z
    Nir Z over 3 years ago in reply to StephenH

    I checked it again and it does work with the simvision gui, thank you!

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information