• 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. Jasper connectivity check

Stats

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

Jasper connectivity check

sraghapx
sraghapx over 9 years ago

** Did not find forum for Jasper tool. Filing here **

I am writing rules for connectivity app. Here, I am interested to write rule for a signal that is input to a module. It is expected to go through a flop stage and then come out. So, essentially, a delayed signal.

My rule looks like this:

CONNECTION,propogate_delay,,propogate_s1,,opropogate_s1
LATENCIES,,0,0,1,0

Based on my understanding, I assume that the signal output is delayed

In the above case, Jasper tool is taking condition that was defined before the above 2 lines.

I am not clear how condition comes into picture in case of latency of a signal.

Can someone clarify?

  • Cancel
Parents
  • CrazyForFormal
    CrazyForFormal over 9 years ago

    Sharan,

    I believe I recreated what you described for the delayed connectivity through a flop in the following design.

    module top ();

    wire src, dest, cond, middle, out_mux,clk,rst;
    reg flop;

    always @(posedge clk or posedge rst)
    if (rst)
      flop <=0;
    else
      begin
        flop <= src;
      end

    assign dest = flop;

    endmodule // top

    Corresponding connectivity specification:

    CONNECTION,test,,src,,dest
    LATENCIES,0,0,1,1,0
    CLOCK,,clk,posedge

    TCL file:

    analyze -sv top.sv
    elaborate
    reset rst
    clock -none
    check_conn -load conn.csv
    check_conn -prove

    As Chris noted in his response you need to make the LATENCIES pattern, 0,0,1,1,0 to push to create the property:

    @(posedge clk) ( ##1 ($past(src, 1) == dest))

    Without the ##1 above you would get a single cycle CEX because the $past(src,1) would return either one or zero because it is asking for the value of src before the formal proof starts. 

    Another key piece of information, is that you need to specify the CLOCK specification so there is no ambiguity regarding the sample clock.  You can avoid this by defining the clock but it is better to explicitly specify the sampling clock so there  is not need to define the clock (clock -none) in the tcl commands.

    See if this clears up your issue with the delayed connection. 

    Regarding the mux.  If it is in the schematic it is in the design.  The connection specification does not influence the schematic. Only the design can impact the schematic.

    If you have a mux, then you need to modify the connectivity specification to specify the mux condition. I modified the code and connectivity file to mimic what I believe you are describing.

    ======== Design ==============

    module top ();

    wire src, dest, cond, middle, out_mux,clk,rst,s;
    reg flop;

    // Mux before flop
    assign out_mux = s ? src : 1'bz;


    always @(posedge clk or posedge rst)
    if (rst)
      flop <=0;
    else
      begin
        flop <= out_mux;
      end

    assign dest = flop;

    endmodule // top

    ========= Connectivity specification - conn.csv ==========

    CONNECTION,test,,src,,dest
    LATENCIES,0,0,1,1,0
    CONDITION,,s,1
    CLOCK,,clk,posedge

    =========== End of connectivity specification =========

    Regarding questions above:

    2) I am also interested to understand if a signal from block A is connected to block B using just a wire, what does Jasper try to prove in this case?

    Does it just check that fanout of A block is fanin to block B or it runs test to prove that block A to block B signal is toggled properly?

    Jasper does validate that fanout of A block is in fanin of B if you issue the tcl command:  "check_conn -validate" in the tcl file. You will see the status marked in the connectivity gui.

    Jasper also verifies source signals can toggle by automatically extracting toggle covers for all inputs of the connectivity specification.

    Insert the tcl command: "check_conn -generate_toggle_checks" before you issue "check_conn -prove" and you will prove these toggle assertions along with each check.

    Let me work on the response to the following and respond tomorrow with the information:

    1) The design I would like to verify has mostly 3-4 types of connections

    - input to a block is simply output

    - input to a block is simply output with a fixed delay

    - input to a block is simply output with variable delay (within a fixed range, say 8-16 clock cycles)

    - multiple inputs are connected to one output based on a signal condition (sort of many to one mux)

    - multiple inputs are connected to one output based on a signal condition (sort of many to one mux) with a delay

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • CrazyForFormal
    CrazyForFormal over 9 years ago

    Sharan,

    I believe I recreated what you described for the delayed connectivity through a flop in the following design.

    module top ();

    wire src, dest, cond, middle, out_mux,clk,rst;
    reg flop;

    always @(posedge clk or posedge rst)
    if (rst)
      flop <=0;
    else
      begin
        flop <= src;
      end

    assign dest = flop;

    endmodule // top

    Corresponding connectivity specification:

    CONNECTION,test,,src,,dest
    LATENCIES,0,0,1,1,0
    CLOCK,,clk,posedge

    TCL file:

    analyze -sv top.sv
    elaborate
    reset rst
    clock -none
    check_conn -load conn.csv
    check_conn -prove

    As Chris noted in his response you need to make the LATENCIES pattern, 0,0,1,1,0 to push to create the property:

    @(posedge clk) ( ##1 ($past(src, 1) == dest))

    Without the ##1 above you would get a single cycle CEX because the $past(src,1) would return either one or zero because it is asking for the value of src before the formal proof starts. 

    Another key piece of information, is that you need to specify the CLOCK specification so there is no ambiguity regarding the sample clock.  You can avoid this by defining the clock but it is better to explicitly specify the sampling clock so there  is not need to define the clock (clock -none) in the tcl commands.

    See if this clears up your issue with the delayed connection. 

    Regarding the mux.  If it is in the schematic it is in the design.  The connection specification does not influence the schematic. Only the design can impact the schematic.

    If you have a mux, then you need to modify the connectivity specification to specify the mux condition. I modified the code and connectivity file to mimic what I believe you are describing.

    ======== Design ==============

    module top ();

    wire src, dest, cond, middle, out_mux,clk,rst,s;
    reg flop;

    // Mux before flop
    assign out_mux = s ? src : 1'bz;


    always @(posedge clk or posedge rst)
    if (rst)
      flop <=0;
    else
      begin
        flop <= out_mux;
      end

    assign dest = flop;

    endmodule // top

    ========= Connectivity specification - conn.csv ==========

    CONNECTION,test,,src,,dest
    LATENCIES,0,0,1,1,0
    CONDITION,,s,1
    CLOCK,,clk,posedge

    =========== End of connectivity specification =========

    Regarding questions above:

    2) I am also interested to understand if a signal from block A is connected to block B using just a wire, what does Jasper try to prove in this case?

    Does it just check that fanout of A block is fanin to block B or it runs test to prove that block A to block B signal is toggled properly?

    Jasper does validate that fanout of A block is in fanin of B if you issue the tcl command:  "check_conn -validate" in the tcl file. You will see the status marked in the connectivity gui.

    Jasper also verifies source signals can toggle by automatically extracting toggle covers for all inputs of the connectivity specification.

    Insert the tcl command: "check_conn -generate_toggle_checks" before you issue "check_conn -prove" and you will prove these toggle assertions along with each check.

    Let me work on the response to the following and respond tomorrow with the information:

    1) The design I would like to verify has mostly 3-4 types of connections

    - input to a block is simply output

    - input to a block is simply output with a fixed delay

    - input to a block is simply output with variable delay (within a fixed range, say 8-16 clock cycles)

    - multiple inputs are connected to one output based on a signal condition (sort of many to one mux)

    - multiple inputs are connected to one output based on a signal condition (sort of many to one mux) with a delay

    • 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