• 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. Mixed-Signal Design
  3. Verilog-A to access wire bus of DUT

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 65
  • Views 17581
  • 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

Verilog-A to access wire bus of DUT

slim15
slim15 over 7 years ago

I am trying to create a verilog-A model to extract bus of nets of my DUT in a similar manner to the component deepprobe from analogLib in a Spectre transient simulation. These buses are at least 20-bit wide and it will be error-prone if I were to add them manually. I created a verilog-A block where I instantiate on the same level as my DUT and the code for the verilog-A is included below. If I try to use Cadence's verilogA editor,for the code below, I get the error "(TE-4309): extract failed for cellview "sandbox simCell_NetnameAccess veriloga". If I comment out the line "V(NetOfInterest01) <+ 1.0*V(NetNameInt);", extraction went smooth and transient simulation yield

  From testbench level, string name is IDUT.UCOMP_TOP.INT_CLK<0>

  From verilog-A level, string name is IDUT.UCOMP_TOP.INT_CLK<0>

is there something I need to do to process string to capture the triangular brackets?

thanks!

========== verilog-A code ==========

`include "constants.h"
`include "discipline.h"

module simCell_NetnameAccess(NetOfInterest01,NetOfInterest02);
  output NetOfInterest01,NetOfInterest02;
  electrical NetOfInterest01,NetOfInterest02;

  //parameter definition
  parameter string NetName = "DUT.XYZ";
  string NetNameInt = "IDUT.UCOMP_TOP.INT_CLK<0>";

  analog begin
    @(initial_step) begin
      $strobe("From testbench level, string name is %s\n", NetName);
      $strobe("From verilog-A level, string name is %s\n", NetNameInt);
    end // END of [ @(initial_step) ]

    V(NetOfInterest01) <+ 1.0*V(NetNameInt);
    V(NetOfInterest02) <+ 1.0*V(NetName);
  end // END of [ analog ]
endmodule

  • Cancel
Parents
  • Dimitra Papazoglou
    Dimitra Papazoglou over 7 years ago

    Hi,

     I don't think that the extract fails because of the bus syntax. I think the failure happens because OOMR nodes can only be constant or parameterized. From the Verilog-A Language reference, it looks like you can not use string variable.

    Cadence Verilog-A Language Reference -- 9 - Out-Of-Module Reference

    So you will need to replace ' string NetNameInt = "IDUT.UCOMP_TOP.INT_CLK<0>"; ' with ' parameter string NetNameInt = "IDUT.UCOMP_TOP.INT_CLK<0>"; ' - you can also use localparam. Or you can use the literal string directly in the branch contribution statement, ' V(NetOfInterest01) <+ 1.0*V("IDUT.UCOMP_TOP.INT_CLK<0>"); '. 

    Regards,
    Dimitra

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Dimitra Papazoglou
    Dimitra Papazoglou over 7 years ago

    Hi,

     I don't think that the extract fails because of the bus syntax. I think the failure happens because OOMR nodes can only be constant or parameterized. From the Verilog-A Language reference, it looks like you can not use string variable.

    Cadence Verilog-A Language Reference -- 9 - Out-Of-Module Reference

    So you will need to replace ' string NetNameInt = "IDUT.UCOMP_TOP.INT_CLK<0>"; ' with ' parameter string NetNameInt = "IDUT.UCOMP_TOP.INT_CLK<0>"; ' - you can also use localparam. Or you can use the literal string directly in the branch contribution statement, ' V(NetOfInterest01) <+ 1.0*V("IDUT.UCOMP_TOP.INT_CLK<0>"); '. 

    Regards,
    Dimitra

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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