• 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. Forcing Verilog signal simple_port with pli_access == TRUE...

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 65
  • Views 16213
  • 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

Forcing Verilog signal simple_port with pli_access == TRUE in Specman

mjzintc
mjzintc over 9 years ago

Hi,

I am working in Specman e and I am trying to force a signal value to a simple port that has its pli_access constrained to TRUE. I am unable to remove the pli_access constraint.

If I use the force keyword, I get a specman error message telling me that force is unsupported with pli_access set to TRUE. Unfortunately, I cannot just do a normal assign because I need the value of this signal to remain until I explicitly release it later.

All of my work arounds don't seem to work. I may need to operate on a signal that is wider than 32 bits as well...

Thanks for your time.

  • Cancel
  • hannes
    hannes over 9 years ago

    Hi Michael,

    you can use a simple indexed_port (without any index) to access a signal/wire. For those the combination of pli_access() and force/release is supported. This is documented in the Specman Integrators guide under:
    6.4.6 Forcing and Releasing SystemVerilog Objects Accessed with e Simple Indexed Ports

    -hannes

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • mjzintc
    mjzintc over 9 years ago

    Hi Hannes,

    Thanks for the response. I am aware of the unsupported combination, but I still need to force a signal that has pli_access() set to TRUE. Maybe I am misunderstanding what pli_access() does... Are there any workarounds or constructs that specman provides for anyone who has this specific use case of needing to force a signal while pli_access() is TRUE?

    Thanks,

    Michael

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • hannes
    hannes over 9 years ago

    Hi Michael,

    maybe there was a misunderstanding, but what I wrote in the last mail is a viable workaround. The combination of indexed_port with the pli_access attribute and the use of force/release is supported and this enables you to force a signal.

    Maybe some example code would help:

    <' // t1.e
    method_type w_pli();

    extend sys {

      wp: simple_port (w_pli) of int is instance;
      keep wp.pli_access()==TRUE;
      keep wp.hdl_path() == "~/top/wp";

      clk_rise: in event_port is instance;
      keep clk_rise.hdl_path() == "~/top/clk";
      keep clk_rise.edge() == rise;

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

      tcm()@clk_rise$ is {
        while TRUE {
          if (sys.time > 500) {
            stop_run();
          };
          if (sys.time == 250 ) {
            force wp.index()$=55;
          };
          if (sys.time == 450 ) {
            release wp.index();
          };
          wait [2];
        };
      };
    };

    '>
    ---- ex.v----

    module top;
      wire [31:0] wp;
      reg clk;

      initial clk = 0;
      always #50 clk = ~clk;

    endmodule

    Regards,
    -hannes

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • mjzintc
    mjzintc over 9 years ago

    Oh I see. Yeah, I did misread your last post. This is exactly the workaround I'm looking for. Thanks!

    • 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