in Verilog-A: Can I ignore WARNING (VACOMP-1047) By community.cadence.com Published On :: Thu, 31 Oct 2024 22:26:29 GMT I need to include Verilog-A files which live outside the Cadence ecosystem (i.e., they are not in veriloga views but rather are just text files) into a veriloga view. These external modules are not compatible with OA (parametized port widths) so I can't put them into cellviews and hook them together using schematics. Example: I have a cellview "test" which has a symbol and veriloga view. I have three "externaI" modules mod1 (inside an external file mod1.va), mod2 (inside an external file mod2.va), and mod3 (inside an external file mod3.va). I instantiate one instance of each module in "module test". The three modules have some parametized ports which are interconnected by parameterized signals p1 and p2. These two signals are strictly local to the module. At the bottom of the module I use "`include mod1.va", "`mod2.va", etc. When I check and save test->veriloga it checks all the included modules as well as the "test" module. However, I get a warning: Warning from spectre during AHDL compile. WARNING (VACOMP-1047): The Verilog-A file contains more than one module definition. ADE can process only one module per Verilog-A file. Put only one module in each Verilog-A file so that ADE can identify pin names, directions, and hierarchy within each separate module. Is this just a SUGGESTION that I can safely ignore, or are my included modules going to be ignored? Full Article
in Xcelium/Simvision/xrun running very slow (waiting for SimVision/Verisium Debug to connect...) By community.cadence.com Published On :: Fri, 01 Nov 2024 10:44:24 GMT Hello,I would like to use the simulation software xrun/simvision that comes with XCELIUM. We are currently using classroom licenses and want to disable all ip addresses on the student pcs except the license server ip. We want to make sure that students cannot copy confidential data from the Cadence tools.Problem:When I launch the xrun simulation while all ip addresses are blocked, it starts but the performance is very slow. The GUI starts after 5 minutes and the simulation is ready after 10 minutes. The interesting thing is that when I enable all blocked ip addresses, everything works at a reasonable speed. Terminal Output (execution without internet connection): xrun -gui design.vhd waiting for SimVision/Verisium Debug to connect...Is there a way to run the simulation tools without an Internet connection? Or can you give me the ip addresses that are used by the simulation tools so that I can enable only those specific ips?Regards,Max Full Article
in Characterization of Full adder that use transmission gates using liberate By community.cadence.com Published On :: Mon, 04 Nov 2024 17:59:38 GMT Hello,I'm trying to characterize a full adder that use transmission gate.Unfortunately, the power calculation are wrong for the cell are always negative.Is there any method or commands that can can help in power calculation or add the power consumption by the input pins to the power calculation ?Another question, Is liberate support the characterization or transmission gate cells as standard cells or I should use liberate AMS for these type of cells ?Thanks in advance,Tareq Full Article
in error when generating snp files from a variable By community.cadence.com Published On :: Tue, 05 Nov 2024 11:22:54 GMT Hello everyone, I have a testbench for generating s2p files from a SP simulation that was working until few months ago. Today I have reopened (w/o making changes that I am aware of) and I get the error as shown below: first I show the testbench settings: notice how the s2p generation is disabled: the field "file" is left blank in the corner I defined some parameters, "filename" is the word that is suppose to generate the name for the s2p. where the two variables are defined as follows And now the output log: spectre.out file gives the following error:When clicking on the error message at "9", the input.scs file opens up and the line 9 gets highlighted in greennow, so far I understood that the problem seem to be related tom the "pathcds" variable, but I really don't understand what the error message here means, since I don't see any error in the input.scs file by the way - if for instance I define the variable "filename" as shown below, then I get no errors: thanksTommaso Full Article
in Colorcoding for low cpk in Yield-View in Assembler By community.cadence.com Published On :: Tue, 05 Nov 2024 13:06:47 GMT Hi, I'm searching for a way to get a quick overview of too low cpk-values after a montecarlo sim. The non-MC results have the spec and thus the easy/understandable red/green/(yellow) colorcoding, but for MC sims I don't get a highlight for high variations inside the limits. Is this possible (besides copying each expression into avg()+3*std()) and ..-..)? It would be really handy to scan through finished sims... (My final application is then to export the table for my reports and documentation...) Regards, leo Full Article
in Force virtuoso (Layout XL) to NOT create warning markers in design By community.cadence.com Published On :: Sat, 09 Nov 2024 08:54:31 GMT Hi I have a rather strange question - is there a way to tell layout XL to NOT place the error/warning markers on a design when I open a cell? I do a lot of my layout by using arrays from placed instances and create mosaics that completely ignore the metadata that Layout XL uses with its bindings with schematic (and instances get deleted etc. but I do like using it to generate all my pins etc.) and it's just really annoying when I open a design that I know is LVS clean and since the connectivity metadata is all screwed up (because I did not use it to actually complete the layout) I have a design that's just blinking at me at every gate, source and drain. I typically delete them at the high level heirarchically but the second I go in and modify something and come back up it places all of them again. I know that if I flatten all the p cells it goes away but sometimes it's nice to have that piece of metadata but that's about it. Is there a way to "break" the features of XL like this? I realize what a weird question this is but it's becoming more of an issue since we moved to IC 23 from IC 6 where there is no longer a layout L that I can use free from these annoyances that can't use any of the connectivity metadata. Thanks Chris Full Article
in Tagging uvm_errors in waveform file for post-processing By community.cadence.com Published On :: Thu, 08 Feb 2024 11:45:04 GMT Hi, Do anyone know if it's possible in simvision waveform viewer to see a timestamp of where uvm_errors/$errors occurred in a simulation via post-processing? Cheers, Antonio Full Article
in incorrect output of multiplication in jaspergold By community.cadence.com Published On :: Fri, 16 Feb 2024 10:02:22 GMT I want to use jaspergold to formally verify functionality of my custom multiplier. I am computing the expected result using A*B to check against output of my multiplier. Here, A and B are two logic signed operands. However, jaspergold is performing the operation A*B incorrectly. I have reproduced this issue using the attached example. JasperGold compiles and elaborates the module and subsequently runs a formal proof. The tool raises a counterexample to assertion whose screenshot is attached below: I simulated the same example using xrun and it was giving the correct product output in simvision waveform. Please help me resolve this issue. I am using 2023.03 version of Jasper Apps. Thanks and regards Anubhav Agarwal Full Article
in UVM Adapter for Pipelined protocols like AHB, AXI etc By community.cadence.com Published On :: Sat, 24 Feb 2024 06:10:18 GMT Hello, I have been running this `uvm_reg_hw_reset_seq` sequence for the AHB protocol. My UVM Adapter looks like: Issue: When I use basic reg.write, my write access are working well, as that is managed by the driver i.e. once adapter gives the packet to the driver, the driver supplies the address and the control signals to the DUT on the first clock cycle and then the write data on the next clock cycle. But when I am performing the read operation, somehow the UVM adapter is reading the data at the same clock cycle where read address + Controls are supplied and this is triggering read failure messages from the `uvm_reg_hw_reset_seq` sequence. What should I modify in the driver/sequencer/adapter so that the UVM adapter can read the data on the next cycle instead of the same clock cycle. Just FYI: The waveforms of the read operation are correct, it is just the Adapter and the `uvm_reg_hw_reset_seq`. The AHB Driver + AHB Monitor is fully proven and verified to be working correctly. Full Article
in Using Xcelium, xrun -nogui option, where are the simulation results By community.cadence.com Published On :: Thu, 29 Feb 2024 18:23:56 GMT I'm completely new to Cadence. I've been able to run a very simple simulation with the -gui option. Simvision opens, I add the variables to the waveform viewer, and press run. All is good. I don't understand the flow when using the -nogui option. It appears that the simulation runs and returns control to the OS. When I launch Simvision, is there a database or file that I can open to display the already-simulated data? My command is of the form: xrun -gui -64bit -sv -access +rwc -top tb_top.sv <src files> Full Article
in Importing ODF to vManager does not update vplan By community.cadence.com Published On :: Tue, 05 Mar 2024 06:20:00 GMT I exported vplan to .odf file in vManager and after editing it I imported it to vManager. The vplan was expected to be synchronized and updated. However, nothing has changed to it. Does anyone know why? Full Article
in UVM debugging: How to save and load signals during an interactive session in Simvision By community.cadence.com Published On :: Thu, 07 Mar 2024 23:18:50 GMT Hello, I am aware of command script .svcf file that saves signals and loads them in while opening Simvision. I am wondering, if there is a way for saving signals while we are in an interactive session and loading them next time when we open Simvision interactively. Any ideas on how to do this? Thank you in advance. Swetha. C Full Article
in Using Vmanager Pre-Script to launch a timed script By community.cadence.com Published On :: Thu, 07 Mar 2024 23:32:05 GMT I would like to send an update about a vmanager regression status x days after the regression has been run. In the current environment, the vmanager regression is creating a new filepath for logs automatically based on regression name/date, so I can't use a cron job to gather logs, as the log location is not known. I tried to use the pre session script to launch a detached shell script that would run after a delay, but when the pre_script runs, it waits until everything is completed before finishing and moving on to starting the regression. Here is the test pre_script I am using: #!/bin/sh echo "pre_script start" delay_script "FIRST" 1nohup delay_script "SECOND" 30 & disowndelay_script "THIRD" 1 echo "pre_script end"exit 0 Here is the test delay_script I am using: #!/bin/sh echo "Starting $1" sleep $2 echo "Ending $1" Here is the script output when run from terminal. After the "pre_script end", I get control back. Here is the script output when run from vmanager. There is no "nohup", and the pre_session phase doesn't complete until all the delay scripts complete. My question is, is there a better way to achieve my goal here? (The goal being to run a script from the vmanager log directory automatically x days after the regression). I think I could use the pre_script to send directory information for an auxiliary cron job to pick up, but I would prefer to not have to have extra cronjobs needed for this. Full Article
in vManager crashes when analyzing multiple sessions simultaneously with a fatal error detected by the Java Runtime Environment By community.cadence.com Published On :: Sat, 16 Mar 2024 04:34:41 GMT When analyzing multiple sessions simultaneously Verisium Manager crashed and reported below error messages: # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007efc52861b74, pid=14182, tid=18380 # # JRE version: OpenJDK Runtime Environment Temurin-17.0.3+7 (17.0.3+7) (build 17.0.3+7) # Java VM: OpenJDK 64-Bit Server VM Temurin-17.0.3+7 (17.0.3+7, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64) # Problematic frame: # C [libucis.so+0x238b74] ...... For more details please refer to the attached log file "hs_err_pid21143.log". Two approaches were tried to solve this problem but neither has worked. Method.1: Setting larger heap size of Java process by "-memlimit" options.For example "vmanager -memlimit 8G". Method.2: Enlarging stack memory size limit of the Coverage engine by setting "IMC_NATIVE_STACKSIZE" environment variable to a larger value. For example "setenv IMC_NATIVE_STACKSIZE 1024000" According to "hs_err_pid*.log" it is almost certain that the memory overflow triggered Java's CrashOnOutOfMemoryError and caused Verisium Manager to crash. There are some arguments about memory management of Java like "Xms, Xmx, ThreadStackSize, Xss5048k etc" and maybe this problem can be fixed by setting these arguments during analysis. However, how exactly does Verisium Manager specify these arguments during analysis? I tried to set them by the form of setting environment variables before analysis but it didn't work in analysis and their values didn't change. Is there something wrong with my operation or is there a better solution? Thank you very much. Full Article
in explain/correct my understanding between average/covered in imc metrics By community.cadence.com Published On :: Wed, 17 Apr 2024 05:36:41 GMT I'm working on the code coverage. Doing a metrics analysis by default we see overall average grade and overall covered. But when i do a block analysis on an instance i see overall covered grade, code covered grade, block covered grade, statement covered grade, expression covered grade, toggle covered grade. As I dont know the difference I started to read the IMC user guide and came to know there are 3 things we come across while doing a code coverage local, covered, average From my understanding local - child instances metrics doesnt reach the parent level. For example, we have an instance Q and its sub instances like Q.a, Q.b. Block Local grade of Q can be 100% even when its instances Q.a and Q.b a block local grades isnt at 100%. In the attached image there is formula The key difference between average and covered is the weights. Average : Mathematically taking the above scenario where Q.a, and Q.b has 10 blocks each. Q.a has covered 8 blocks and q.b has covered 2 blocks. Now if we take the normal average it should be total covered/ totatl number = 8+2/10+10 yielding 50%. But when we add weights saying Q.a is 70% and Q.b is 30% the new number would be (8*0.7+2*0.3) / (10*0.7+10*0.3) resulting 62%. Because of the weights we see 12% bump. Covered: there is no role of weights. Among these 3 metrics i've changed my default view to this in the image to get more realistic picture when i do analyze metrics. Do you guys agree with the approach? Full Article
in Parameterizing an Instance By community.cadence.com Published On :: Wed, 24 Apr 2024 16:03:12 GMT Hi,I want to parameterized width and length of a NMOS, but it ignore it and I face this error:*WARNING* Value input must be a number - setting back to previous value.Does anybody know how I can fix this issue?Thanks Full Article
in xcelium - CSI: *F,INTERR: INTERNAL EXCEPTION By community.cadence.com Published On :: Sun, 19 May 2024 10:06:24 GMT I just completed the setup of xcelium and I am trying to test a very simple vhdl file - I got " CSI: *F,INTERR: INTERNAL EXCEPTION" without any further explanation. Could someone point me to how to investigate this error further? csi-xmelab - CSI: Command line: xmelab -f /home/cadadmin/test/xcelium.d/run.lnx86.23.03.d/xmelab.args -ACCESS +r -no_analogsolver -MESSAGES andgate -XLMODE ./xcelium.d/run.lnx86.23.03.d -RUNMODE -CDSLIB ./xcelium.d/run.lnx86.23.03.d/cds.lib -HDLVAR ./xcelium.d/run.lnx86.23.03.d/hdl.var -WORK worklib -IRUNHASTOP -CHECK_VERSION TOOL: xrun 23.03-s001 -LOG_FD 4 csi-xmelab - CSI: *F,INTERR: INTERNAL EXCEPTION-----------------------------------------------------------------The tool has encountered an unexpected condition and must exit.Contact Cadence Design Systems customer support about thisproblem and provide enough information to help us reproduce it,including the logfile that contains this error message. TOOL: xmelab 23.03-s001OPERATING SYSTEM: Linux 4.18.0-513.9.1.el8_9.x86_64 #1 Elaboration of package STD.STANDARD----------------------------------------------------------------- csi-xmelab - CSI: Cadence Support Investigation, recording detailscsi-xmelab - CSI: investigation complete took 0.000 secs, send this file to Cadence Support Full Article
in Xcelium: dump coverage information in the middle of a simulation By community.cadence.com Published On :: Fri, 23 Aug 2024 10:25:15 GMT Hi, I'm using the xcelium simulator to simulate a testbench, in which I first stimulate my design to do something (part "A") and then do a direct follow-up test on the design (part "B"). I need two things from this testbench: the results of the test (part "B", passed/failed) and coverage information, but the coverage information should only include part A and explicitly not part B. I could do the following: run the testbench with part A and B, get the "passed/failed" result of the test and then follow up another simulator run with another testbench, that only includes part A and get the coverage information from that simulation run. Is there a way to force xcelium to give me the coverage information of only a part of the simulation? Ideally, I would like to write the verilog code of my testbench to look something like this: do A dump coverage information do B But maybe there is another way to tell xcelium to consider only part of the testbench for the coverage information. I did have a look at the manual, but was not able to find something useful for this problem. Any ideas? Full Article
in Simvision Array Slicing By community.cadence.com Published On :: Fri, 30 Aug 2024 07:33:33 GMT > reg [63:0] rMem [0:255] signal it can be confirmed by rMem [0:255] in Simvision Is it possible to generate a new rMem1 signal and rMem2 signal by splitting it into 32 bits width through right-click> Create on rMem? Full Article
in Collecting Coverage using Vmanager By community.cadence.com Published On :: Mon, 02 Sep 2024 16:13:36 GMT Hi, I am running a regression in order to collect the coverage. However I have an issue. I am setting a signal to 0 when reset is de-asserted then this signal takes a fixed value when the reset is asserted. if(!rst_n) init_val= 'b0; else init_val= 31'h34013FF7 the issue is that I got 0% coverage for the init_value since we only have a rising edge and the signal is not toggling during the simulation. is there an option to collect coverage when there is a rising edge or a falling edge? Full Article
in Indago stops everytime sees the UVM_ERROR By community.cadence.com Published On :: Sun, 08 Sep 2024 02:56:06 GMT I am running simulation in gui mode using Indago and every time there is UVM_ERROR occur simulation stops. I have to resume it manually. is there any way to disable this feature. Full Article
in Using vManager to identify line coverage from a specific test By community.cadence.com Published On :: Tue, 24 Sep 2024 21:20:52 GMT I have been using the rank feature to identify tests that are redundant in our environment, but then I realized I'd also like to be able to see exactly what coverage goes into increasing the delta_cov value for a given test. If I had a test in my rank report that contributed 0.5% of the delta_cov, how could I got about seeing exactly where that 0.5% was coming from? It seems like that might be part of the correlate function, but I couldn't mange to find a way to see what specific coverage was being contributed for a given test. Full Article
in Auto-Coloring Waves in Simvision? By community.cadence.com Published On :: Wed, 25 Sep 2024 22:09:53 GMT Hello, First, I had something working that broke in the past few versions that I've been meaning to get working again. There was some setting I recall in the GUI that allowed me to have inputs be placed in the waveform viewer with yellow traces, and output signals with orange traces to match the name colors. How can I set this to happen in the .simvisionrc file? Second, I would like to add something to my .simvisionrc file to go through foreach signal and depending on key locations based on the signal's Path.Name (mainly the model and design areas) such that if the path contains "mon", then to auto-set the trace and name colors to something such as cyan. I'd like to have loops for various key areas of the design to color-code the signals. Third, I am interested if there is a possibility of coloring names/traces foregound colors to based on which position they are in the waveform viewer to make banding, ideally such that every three (or whatever) are one color (or a color mutation, adding some gray to signals colorized by the auto-coloring mentioned already, etc) that allows for the signal names/traces to be colorized along with the built-in optional black/gray background banding. Thanks in advance Full Article
in Using "add net constraints" command in Conformal By community.cadence.com Published On :: Thu, 01 Mar 2007 08:37:14 GMT Hi I have tried using "add net constraints" command to place one-cold constraints on a tristate enable bus. In the command line we need to specify the "net pathname" on which the constraints are to be enforced. The bus here is 20-bit. How should the net pathname be specified to make this 20-bit bus signals one_hot or one_cold. The bus was declared as follows: ten_bus [19:0] The command I used was add net constraints one_hot /ren_bus[19] What would the above command mean? Should we not specify all the nets' pathnames on the bus? Is it sufficient to specify the pathname of one net on the bus? I could not get much info regarding the functionality of this command. I would be obliged if anyone can throw some light. Thanks Prasad. Originally posted in cdnusers.org by anssprasad Full Article
in c interface with specman By community.cadence.com Published On :: Thu, 05 Apr 2007 01:56:58 GMT Hi, I need to call a c function form specman . I had followed the below steps.File vb_pattern.e--------------------------------- struct vb_pattern_s{ %data_in_ch0 : uint (bits : 4); // data on channel 0 %data_in_ch1 : uint (bits : 4); // data on channed 1 %data_in_ch2 : uint (bits : 4); // data on channel 2 %mode : uint (bits : 1); // mode %enable : uint (bits : 1); // enable };C export vb_pattern_s;------file x_output_bfm.e--------------------------------------------check_patterns()@clk_e is{ ... exp_viterbi_op();}routine exp_viterbi_op() is C routine viterbi_c_func;---- EOF------X.c#include "vb_pattern.h" void viterbi_c_func (){ SN_TYPE(vb_pattern_s) vb_packet; SN_TYPE(mode) mode; vb_packet = SN_SYS->ops mode = vb_packet->mode; printf(" Printing from C environment MODE = %h ", mode); }------------------- EOF----x_top.e------------import tb/vb_pattern.e;import tb/x_input_bfm.e;import tb/x_output_bfm.e;import tb/x_cover_dut.e;import tb/x_env.e;I did the following comand>> sn_compile.sh -h_only x_top.e -o vb_pattern.h>> gcc -c viterbi.c -o viterbi.oI am getting the following errorviterbi.c: In function `viterbi_c_func':viterbi.c:6: error: `t__mode' undeclared (first use in this function)viterbi.c:6: error: (Each undeclared identifier is reported only onceviterbi.c:6: error: for each function it appears in.)viterbi.c:6: error: syntax error before "mode"viterbi.c:7: error: `mode' undeclared (first use in this function)Please help me resolve this.Kesav Originally posted in cdnusers.org by kesava Full Article
in Posting code to the forum By community.cadence.com Published On :: Tue, 24 Jul 2007 14:01:07 GMT When posting code to the forums, copy from a text editor such as notepad, not from word or Outlook. Be sure to click the HTML tab BEFORE you paste your text. Click on the "html" mode tab on your "reply" dialog box. Then wrap your text with like this: pasted text NOTE: Do not put a space in the I have done that here so it will show up as text. Also, be sure to click the HTML tab BEFORE you paste your text. This is how it will look when coded correctly pasted text Originally posted in cdnusers.org by Administrator Full Article
in Macro for multiple-value when definitions By community.cadence.com Published On :: Wed, 31 Oct 2007 08:23:28 GMT The two macros below introduce new syntax for adding definitions to more than one 'when' determinant value at the same time. The first macro overloads 'extend' keyword and the second is the equivalent for 'when' keyword.A use example:extend [HUGE, BIG] packet { // definitions that pertain to these subtypes};The above code would be expanded in the following (naive) way:extend HUGE packet { // definitions that pertain to these subtypes };extend BIG packet { // definitions that pertain to these subtypes }; The macros code:define 'statement> "extend ['name>,...] 'name> ({;...})" as computed { for each in 'names> do { result = appendf("%sextend %s %s %s;",result,it,'name>,); }; result = appendf("{%s}",result); // required only for versions 6.1.1 or earlier};define 'struct_member> "when ['name>,...] 'name> ({;...})" as computed { for each in 'names> do { result = appendf("%swhen %s %s %s;",result,it,'name>,); }; result = appendf("{%s}",result); // required only for versions 6.1.1 or earlier};Originally posted in cdnusers.org by matanvax Full Article
in Item constraint macro By community.cadence.com Published On :: Wed, 31 Oct 2007 09:15:20 GMT The following macros encapsulates a design pattern that enables constraining data item fields by 'do' actions of a high level sequence. This can be done without presupposing anything about the sequence tree generated under the do-ing sequence.The tar file consists of 4 files:- item_constraint_macro.e - the 'item_constraint' and 'sequence_export' macros definition- item_constraint_example.e and sequence_export_example.e - use examples (one per each new construct)- packet_seq.e - an auxiliary definition file for the examplesThis topic was discussed in a Club-T presentation (Israel, Sophia-Antipolis, Munich). The presentation is also publicly avaiable.Originally posted in cdnusers.org by matanvax Full Article
in vr_ad register definition utility By community.cadence.com Published On :: Tue, 13 Jan 2009 06:55:41 GMT Hi All.I put together a small Perl script to generate vr_ad register definitions from SPIRIT (IP-XACT) XML.If you've got not idea what IP-XACT is, have a look here www.spiritconsortium.org/, then start pestering your design manager to use it :-)The script can filter out registers and override R/W access types if needed.An example XML file is included with the package so that you can play with it, and there's a detailed README.txt as well.Here's an example of the generated e code:// Automatically generated from xdmac.xml// DO NOT EDIT, or your changes may be lost<'import vr_ad/e/vr_ad_top;// Component = XDMAC// memoryMap = xdmacextend vr_ad_map_kind : [XDMAC];// addressBlock = dma_ethextend vr_ad_reg_file_kind : [DMA_ETH];extend DMA_ETH vr_ad_reg_file { keep size == 20; keep addressing_width_in_bytes == 4;};// Register = command// Reset = 0x00reg_def COMMAND DMA_ETH 0x0 { // Field resv3 = command[31:29] reg_fld resv3 : uint(bits:3) : R : 0 : cov ; // Field transfer_size = command[28:19] reg_fld transfer_size : uint(bits:10) : RW : 0 : cov ; // Field dma_transfer_target = command[18:14] reg_fld dma_transfer_target : uint(bits:5) : RW : 0 : cov ; // Field resv2 = command[13:10] reg_fld resv2 : uint(bits:4) : R : 0 : cov ; // Field transmit_receive = command[9:9] reg_fld transmit_receive : uint(bits:1) : RW : 0 : cov ; // Field resv1 = command[8:5] reg_fld resv1 : uint(bits:4) : R : 0 : cov ; // Field dest_address_enable = command[4:4] reg_fld dest_address_enable : uint(bits:1) : RW : 0 : cov ; // Field source_address_enable = command[3:3] reg_fld source_address_enable : uint(bits:1) : RW : 0 : cov ; // Field word_size = command[2:0] reg_fld word_size : uint(bits:3) : R : 0 : cov ;};// Register = queue_exec// Reset = 0x00reg_def QUEUE_EXEC DMA_ETH 0x10 { // Field resv = queue_exec[31:1] reg_fld resv : uint(bits:31) : R : 0 : cov ; // Field exec = queue_exec[0:0] reg_fld exec : uint(bits:1) : RW : 0 : cov ;};extend XDMAC vr_ad_map { dma_eth : DMA_ETH vr_ad_reg_file; post_generate() is also { add_with_offset(0x00, dma_eth); dma_eth.reset(); };}'> Any comments, please feed them back to me so I can enhance the script. Note that this forum forces me to post a .zip file rather than .tgz, please be careful to unpack the file under Linux, not Windows, else the DOS linefeeds will corrupt the Perl and XML files. Steve Full Article
in IntelliGen Statistics Metrics Collection Utilility By community.cadence.com Published On :: Thu, 04 Jun 2009 16:24:28 GMT As noted in white papers, posts on the Team Specman Blog, and the Specman documentation, IntelliGen is a totally new stimulus generator than the original "Pgen" and, as a result, there is some amount of effort needed to migrate an existing verification environment to fully leverage the power of IntelliGen. One of the main steps in migrating code is running the linters on your code and adressing the issues highlighted. Included below is a simple utility you can include in your environment that allows you to collect some valuable statistics about your code base to allow you to better gauge the amount of work that might be required to migrate from Pgen to IntelliGen. The ICFS statistics reported are of particular benefit as the utility not only identifies the approximate number of ICFSs in the environment, it also breaks the total number down according to generation contexts (structs/units and gen-on-the-fly statements) allowing you to better focus your migration efforts. IMPORTANT: Sometimes a given environment can trigger a large number of IntelliGen linting messages right off the bat. Don't let this freak you out! This does not mean that migration will be a long effort as quite often some slight changes to an environment remove a large number of identified issues. I recently encountered a situation where a simple change to three locations in the environment, removed 500+ ICFSs!The methods included in the utility can be used to report information on the following:- Number of e modules - Number of lines in the environment (including blanks and comments)- Number and type of IntelliGen Guidelines linting messages- Number of Inconsistently Connected Field Sets (ICFSs)- Number of ICFS contexts and how many ICFSs per context- Number of soft..select overlays found in the envioronment- Number of Laces identified in the environmentTo use the code below, simply load it before/after loading e-code and then you can execute any of the following methods:- sys.print_file_stats() : prints # of lines and files - sys.print_constraint_stats() : prints # of constraints in the environment- sys.print_guideline_stats() : prints # of each type of linting message- sys.print_icfs_stats() : prints # of ICFSs, contexts and #ICFS/context- sys.print_soft_select_stats() : prints # of soft select overlay issues- sys.print_lace_stats() : *Only works for SPMNv6.2s4 and later* prints # of laces identified in the environmentEach of the above calls to methods produces it's own log files (stored in the current working directory) containing relevant information for more detailed analysis. - file_stats_log.elog : Output of "show modules" command- constraint_log.elog : Output of the "show constraint" command- guidelines_log.elog : Output of "gen lint -g" (with notification set to MAX_INT in order to get all warnings)- icfs_log.elog : Output of "gen lint -i" command- soft_select_log.elog: Output of the "gen lint -s" command- lace_log.elog : Output of the "show lace" commandHappy generating!Corey Goss Full Article
in Einstein's puzzle (System Verilog) solved by Incisive92 By community.cadence.com Published On :: Fri, 20 Nov 2009 17:54:07 GMT Hello All,Following is the einstein's puzzle solved by cadence Incisive92 (solved in less than 3 seconds -> FAST!!!!!!) Thanks,Vinay HonnavaraVerification engineer at Keyu Techvinayh@keyutech.com // Author: Vinay Honnavara// Einstein formulated this problem : he said that only 2% in the world can solve this problem// There are 5 different parameters each with 5 different attributes// The following is the problem// -> In a street there are five houses, painted five different colors (RED, GREEN, BLUE, YELLOW, WHITE)// -> In each house lives a person of different nationality (GERMAN, NORWEGIAN, SWEDEN, DANISH, BRITAIN)// -> These five homeowners each drink a different kind of beverage (TEA, WATER, MILK, COFFEE, BEER),// -> smoke different brand of cigar (DUNHILL, PRINCE, BLUE MASTER, BLENDS, PALL MALL)// -> and keep a different pet (BIRD, CATS, DOGS, FISH, HORSES)///////////////////////////////////////////////////////////////////////////////////////// *************** Einstein's riddle is: Who owns the fish? ***************************////////////////////////////////////////////////////////////////////////////////////////*Necessary clues:1. The British man lives in a red house.2. The Swedish man keeps dogs as pets.3. The Danish man drinks tea.4. The Green house is next to, and on the left of the White house.5. The owner of the Green house drinks coffee.6. The person who smokes Pall Mall rears birds.7. The owner of the Yellow house smokes Dunhill.8. The man living in the center house drinks milk.9. The Norwegian lives in the first house.10. The man who smokes Blends lives next to the one who keeps cats.11. The man who keeps horses lives next to the man who smokes Dunhill.12. The man who smokes Blue Master drinks beer.13. The German smokes Prince.14. The Norwegian lives next to the blue house.15. The Blends smoker lives next to the one who drinks water.*/typedef enum bit [2:0] {red, green, blue, yellow, white} house_color_type;typedef enum bit [2:0] {german, norwegian, brit, dane, swede} nationality_type;typedef enum bit [2:0] {coffee, milk, water, beer, tea} beverage_type;typedef enum bit [2:0] {dunhill, prince, blue_master, blends, pall_mall} cigar_type;typedef enum bit [2:0] {birds, cats, fish, dogs, horses} pet_type;class Einstein_problem; rand house_color_type house_color[5]; rand nationality_type nationality[5]; rand beverage_type beverage[5]; rand cigar_type cigar[5]; rand pet_type pet[5]; rand int arr[5]; constraint einstein_riddle_solver { foreach (house_color[i]) foreach (house_color[j]) if (i != j) house_color[i] != house_color[j]; foreach (nationality[i]) foreach (nationality[j]) if (i != j) nationality[i] != nationality[j]; foreach (beverage[i]) foreach (beverage[j]) if (i != j) beverage[i] != beverage[j]; foreach (cigar[i]) foreach (cigar[j]) if (i != j) cigar[i] != cigar[j]; foreach (pet[i]) foreach (pet[j]) if (i != j) pet[i] != pet[j]; //1) The British man lives in a red house. foreach(nationality[i]) (nationality[i] == brit) -> (house_color[i] == red); //2) The Swedish man keeps dogs as pets. foreach(nationality[i]) (nationality[i] == swede) -> (pet[i] == dogs); //3) The Danish man drinks tea. foreach(nationality[i]) (nationality[i] == dane) -> (beverage[i] == tea); //4) The Green house is next to, and on the left of the White house. foreach(house_color[i]) if (i<4) (house_color[i] == green) -> (house_color[i+1] == white); //5) The owner of the Green house drinks coffee. foreach(house_color[i]) (house_color[i] == green) -> (beverage[i] == coffee); //6) The person who smokes Pall Mall rears birds. foreach(cigar[i]) (cigar[i] == pall_mall) -> (pet[i] == birds); //7) The owner of the Yellow house smokes Dunhill. foreach(house_color[i]) (house_color[i] == yellow) -> (cigar[i] == dunhill); //8) The man living in the center house drinks milk. foreach(house_color[i]) if (i==2) // i==2 implies the center house (0,1,2,3,4) 2 is the center beverage[i] == milk; //9) The Norwegian lives in the first house. foreach(nationality[i]) if (i==0) // i==0 is the first house nationality[i] == norwegian; //10) The man who smokes Blends lives next to the one who keeps cats. foreach(cigar[i]) if (i==0) // if the man who smokes blends lives in the first house then the person with cats will be in the second (cigar[i] == blends) -> (pet[i+1] == cats); foreach(cigar[i]) if (i>0 && i<4) // if the man is not at the ends he can be on either side (cigar[i] == blends) -> (pet[i-1] == cats) || (pet[i+1] == cats); foreach(cigar[i]) if (i==4) // if the man is at the last (cigar[i] == blends) -> (pet[i-1] == cats); foreach(cigar[i]) if (i==4) (pet[i] == cats) -> (cigar[i-1] == blends); //11) The man who keeps horses lives next to the man who smokes Dunhill. foreach(pet[i]) if (i==0) // similar to the last case (pet[i] == horses) -> (cigar[i+1] == dunhill); foreach(pet[i]) if (i>0 & i<4) (pet[i] == horses) -> (cigar[i-1] == dunhill) || (cigar[i+1] == dunhill); foreach(pet[i]) if (i==4) (pet[i] == horses) -> (cigar[i-1] == dunhill); //12) The man who smokes Blue Master drinks beer. foreach(cigar[i]) (cigar[i] == blue_master) -> (beverage[i] == beer); //13) The German smokes Prince. foreach(nationality[i]) (nationality[i] == german) -> (cigar[i] == prince); //14) The Norwegian lives next to the blue house. foreach(nationality[i]) if (i==0) (nationality[i] == norwegian) -> (house_color[i+1] == blue); foreach(nationality[i]) if (i>0 & i<4) (nationality[i] == norwegian) -> (house_color[i-1] == blue) || (house_color[i+1] == blue); foreach(nationality[i]) if (i==4) (nationality[i] == norwegian) -> (house_color[i-1] == blue); //15) The Blends smoker lives next to the one who drinks water. foreach(cigar[i]) if (i==0) (cigar[i] == blends) -> (beverage[i+1] == water); foreach(cigar[i]) if (i>0 & i<4) (cigar[i] == blends) -> (beverage[i-1] == water) || (beverage[i+1] == water); foreach(cigar[i]) if (i==4) (cigar[i] == blends) -> (beverage[i-1] == water); } // end of the constraint block // display all the attributes task display ; foreach (house_color[i]) begin $display("HOUSE : %s",house_color[i].name()); end foreach (nationality[i]) begin $display("NATIONALITY : %s",nationality[i].name()); end foreach (beverage[i]) begin $display("BEVERAGE : %s",beverage[i].name()); end foreach (cigar[i]) begin $display("CIGAR: %s",cigar[i].name()); end foreach (pet[i]) begin $display("PET : %s",pet[i].name()); end foreach (pet[i]) if (pet[i] == fish) $display("THE ANSWER TO THE RIDDLE : The %s has %s ", nationality[i].name(), pet[i].name()); endtask // end display endclassprogram main ; initial begin Einstein_problem ep; ep = new(); if(!ep.randomize()) $display("ERROR"); ep.display(); endendprogram // end of main Full Article
in Simvision - Signal loading By community.cadence.com Published On :: Fri, 04 May 2012 04:59:11 GMT Hi all Good day.Can anyone tell me whether it is possible to view the signals once it is modified from its previous values without closing the simvision window. If possible kindly let me know the command for it(Linux). Is it possible to view the schematic for the code written?? Kindly instruct me. Thanks all.S K S Full Article
in memory leak in ncsim By community.cadence.com Published On :: Fri, 16 Aug 2013 06:32:51 GMT ncsim will consume an increasing ammount of memory when a function has an output port that return an associative array which was not initialized. My simulator version is 12.10-s011.Below is a code example to reproduce the failure. The code is inside a class (uvm_object): function void a_function(output bit ret_val[int]); // empty endfunction : get_coveach time the call is done a small ammount of memory is allocated. I n my case I call this function several (millions of) times during simulation and then I can see the memory leaking. Full Article
in help with automating adding CLP files to DRA files By community.cadence.com Published On :: Thu, 12 Jun 2014 16:50:37 GMT Question for forum: I’m currently working on a code to automatically add CLP files to DRA files and then add two classes called “APPROVED” and “CLP”. To do this manually you have to open a DRA file, click file import subdrawing and choose the clp file with the same name as dra. (path already set). You then set the clp to position x 0 0. And then click on Set Up > Subclasses > Package geometry and type in “Approved” and “Clp.” So far we’ve recorded the macros in Allegro for all of these actions. The macros correspond to one specific file name and we want to apply this to numerous files. To do this we created a python program that locates all of the specified CLP and DRA files, and if they have a matching name, runs a for loop that puts each file name into a stored variable that runs a loop for each file. We converted this script into batch and then added a function that we thought would run Allegro macros from batch. In order to get the script working, we need to have an allegro batch command that will run the script without opening the Allegro start popup, or closing the popup when it appears. We need to do this to run any script from starting Allegro. I’ve done another similar program in batch where I made a for loop for each dra file and within the loop there was a batch a2dxf command that converted all dra files to dxf files. Is there a similar batch command for adding clp files to position 0 0 and/ or adding classes? If anyone has done something similar please let me know! Thank you very much for the help. Jen Full Article
in Creating cover items for sparse values/queue or define in specman By community.cadence.com Published On :: Fri, 12 Jul 2019 17:51:31 GMT Hello, I have a question I want to create a cover that consists a sparse values, pre-computed (a list or define) for example l = {1; 4; 7; 9; 2048; 700} I'd like to cover that data a (uint(bits:16)) had those values, Any suggestion on how to achieve this, I'd prefer to stay away from macros, and avoid to write a lot of code struct inst { data :uint(bits:16); opcode :uint(bits:16); !valid_data : list of uint(bits:16) = {0; 12; 10; 700; 890; 293;}; event data_e; event opcode_e; cover data_e is { item data using radix = HEX, ranges = { //I dont want to write all of this range([0], "My range1"); range([10], "My range2"); //... many values in between range([700], "My rangen"); }; item opcode; cross data, opcode; }; post_generate() is also { emit data_e; };}; Full Article
in How to transfer trained an artificial neural network to Verilog-A By community.cadence.com Published On :: Mon, 17 Oct 2022 11:58:59 GMT Hi all, I've trained a device model with the approach of an artificial neural network, and it shows well fit. May I know how to transfer the trained model to Verilog-A, so that, we can use this model to do circuit simulation? And I've searched for some lectures that provide the Verilog-A code in the appendix, but I'm freshman in the field of Verilog-A, could anyone tell me each statement? such as real hlayer-w[0:(NI*NNHL)-1 Full Article
in X-FAB's Innovative Communication and Automotive Designs: Powered by Cadence EMX Planar 3D Solver By community.cadence.com Published On :: Sun, 31 Jul 2022 17:01:00 GMT Using the EMX solver, X-FAB design engineers can efficiently develop next-generation RF technology for the latest communication standards (including sub-6GHz 5G, mmWave, UWB, etc.), which are enabling technologies for communications and electric vehicle (EV) wireless applications. (read more) Full Article EM Analysis electromagnetics in-design analysis reference design Electromagnetic analysis PDK foundry
in This Month in IDA By community.cadence.com Published On :: Mon, 08 Aug 2022 02:55:00 GMT IDA activities in July included an endorsement from X-Fab for EMX as well as multiple multiphysics blog posts spanning SI, PI, thermal, EM and microwave analysis domains.(read more) Full Article ims2022 Power Integrity in-design analysis oncloud shift left Signal Integrity electromagnetic multiphysics
in Overcoming Thermal Challenges in Modern Electronic Design By community.cadence.com Published On :: Tue, 09 Aug 2022 14:24:00 GMT Melika Roshandell talks with David Malinak in a Microwaves & RF QuickChat video about the thermal challenges in today’s complex electronic designs and how the Celsius solver uniquely addresses them.(read more) Full Article 3D-IC in-design analysis Thermal Integrity Thermal Analysis electronic systems
in BoardSurfers: Training Insights: User Interface Enhancements for Allegro Layout Editors By community.cadence.com Published On :: Fri, 19 Aug 2022 12:03:00 GMT If you have seen any images or demonstrations of the 17.4-2019 release, the GUI may look ...(read more) Full Article digital badge 17.4 BoardSurfers 17.4-2019 Training Insights Allegro PCB Editor online training Allegro
in BoardSurfers: Managing Silkscreen Data Using Allegro 3D Canvas By community.cadence.com Published On :: Wed, 24 Aug 2022 13:30:00 GMT The silkscreen layer plays a crucial role in the assembly, repair, and testing of a PCB. You can add a variety of information to this layer, such as the location of the components, polarity, component orientation, on-off switches, LEDs, and testpoint...(read more) Full Article 17.4 BoardSurfers 3D Canvas 17.4-2019 Allegro PCB Editor silkscreen Allegro
in Quickchat Video Interview: Introducing Cadence Optimality and OnCloud for Systems Analysis and Signoff By community.cadence.com Published On :: Tue, 30 Aug 2022 15:05:00 GMT Microwaves & RF's David Maliniak interviews Sherry Hess of Cadence about recently announced products of Optimality and OnCloud.(read more) Full Article SaaS in-design analysis optimization multiphysics
in This Month in IDA By community.cadence.com Published On :: Tue, 06 Sep 2022 15:17:00 GMT IDA activities in August showcased two video interviews with David Maliniak of Microwaves & RF magazine. New posts, datasheets, application notes and white papers highlight multiphysics analysis spanning SI, PI, thermal, EM and microwave analysis domains are also featured.(read more) Full Article encryption in-design analysis optimization Signal Integrity electromagnetic Thermal Analysis microwave design multiphysics
in BoardSurfers: Managing Design Constraints Efficiently Using Constraint Sets By community.cadence.com Published On :: Wed, 07 Sep 2022 13:44:00 GMT A constraint is a user-defined property, or a rule, applied to a physical object, such as a net, pin, or via in a design. There are a number of constraints that can be applied to an object based on its type and behavior. For example, you can define t...(read more) Full Article PCB 17.4 BoardSurfers PCB Editor Constraint Manager 17.4-2019 PCB design Constraints Allegro PCB Editor Constraint Set Allegro
in BoardSurfers: Training Insights: What’s New in the Allegro PCB Editor Basic Techniques Course By community.cadence.com Published On :: Tue, 20 Sep 2022 14:32:00 GMT The Allegro PCB Editor Basic Techniques course provides all the essential training required to start working with Allegro® PCB Editor. The course covers all the design tasks, including padstack and symbol creation, logic import, constraints setup...(read more) Full Article digital badge 17.4 BoardSurfers symbol editor 3D Canvas 17.4-2019 PCB design Training Insights Allegro PCB Editor online training Allegro
in EMX - Localised back etching By community.cadence.com Published On :: Wed, 07 Feb 2024 10:40:26 GMT Do you know if it is possible to define localized back etching (LBE) in EMX? It should be associated to a layer which defines the holes done in the substrate. I've not found any reference for this in the .proc syntax. --> Answer found. This is not possible because EMX considers the same dielectric in all x-y plane Full Article
in Error with launching Python Script Via AWRDE VBA Script By community.cadence.com Published On :: Sun, 11 Feb 2024 03:23:21 GMT Hello Team,I am currently following this AWR script posted on them, to run a python script directly from inside AWR using VBA script. Launching Python from AWRDE VBA Script - AWR Scripts - AWR Knowledgebase Following all the basic steps with no changes to the code. I have Vscode and python-3.12.2 installed in my system. This is the error I am getting while running this code. Thank you for your help Best Regards SID Full Article
in Strmount failed in streaming out cell By community.cadence.com Published On :: Thu, 15 Feb 2024 12:22:58 GMT Hi, I would be grateful if you can help me with this error which I get after trying to run an EMX simulation on a PCELL. I've found very limited information in this forum. Thanks Full Article
in Error when trying to generate SUL license (-8) By community.cadence.com Published On :: Tue, 09 Apr 2024 15:08:36 GMT Hi, newbie here. We are using AWR Design Enviroment in our university and so I have to install it (OS: Arch Linux)I installed it in a Windows 10 VM without problems. When I try to start it prompts "Failed to connect to license server", I guess thats the first problem. After that when trying to generate my SUL License it will prompt Internal Error -8 (see Image) I can't find something on Error -8 :/ and overall the available data to the license topic is quit low :/If someone has a solution for that I would gladly hear about it :) Full Article
in VAR("") does not work within some expressions By community.cadence.com Published On :: Mon, 22 Apr 2024 20:47:33 GMT Hi, My Virtuoso and Spectre Version: ICADVM20.1-64b.NYISR30.2 I have an expression where the EvalType is "sweeps". Here is the expression (I also attached the snapshot): (peakToPeak(leafValue(swapSweep(delay(?wf1 clip((VT("/clk0") - VT("/clk180")) (VAR("mt_stop") - (4.0 / VAR("datarate"))) VAR("mt_stop")) ?value1 0 ?edge1 "rising" ?nth1 1 ?td1 0 ?tol1 nil ?wf2 clip((VT("/tx_padp") - VT("/tx_padn")) (VAR("mt_stop") - (4.0 / VAR("datarate"))) VAR("mt_stop")) ?value2 0 ?edge2 "rising" ?nth2 1 ?tol2 nil ?td2 nil ?stop nil ?multiple nil) "VDD_FIXED_NOISE") "VREGLN_cmode" 0.85 "VREGDRV_novn" 0.4 "datarate" 1.658e+10) ?overall t) / 10.0) What this expression does is that it compares the delay between the output data with respect to a reference clock. I then get this information for two conditions (VDD_FIXED_NOISE = 0 or 10mV) to get the effect of the supply-induced jitter. In the expression, I need to give the value of each parameter in different modes to distinguish them from each other. Now I want to sweep the base supply values and see the supply variation effects. For example, I want to change VREGLN_cmode from 0.85 to 0.81 and see how my supply-induced jitter changes. For that, the hard way is to copy the expression and change that value accordingly (e.g. "VREGLN_cmode" 0.81). I'm looking for an easier way to use a variable in the expression. Something like VAR("VREGLN_Sweep"). But I see it doesn't work in my expression and it gives an eVal error. I tested this before in other expressions (not sweep type) and it always worked. I have only one test and these variables are all Design Variables and not Global variables.I want to know what mistake am I doing here and is there a way to make this work. Sorry that if I could not explain better my inquiry. Thank you. Full Article