ng The Future of Driving: How Advanced DSP is Shaping Car Infotainment Systems By community.cadence.com Published On :: Tue, 08 Oct 2024 15:40:00 GMT As vehicles transition into interconnected ecosystems, artificial intelligence and advanced technologies become increasingly crucial. Infotainment systems have evolved beyond mere music players to become central hubs for connectivity, entertainment, and navigation. With global demand for comfort, convenience, and safety rising, the automotive infotainment market is experiencing significant growth. Valued at USD14.99 billion in 2023, it is projected to grow at a compound annual growth rate (CAGR) of 9.9% from 2024 to 2030. To keep pace with this evolution, infotainment systems must accommodate a range of workloads, including audio, voice, AI, and vision technologies. This requires a flexible, scalable Digital Signal Processor (DSP) solution that acts as an offload engine for the main application processor. Integrating a single DSP for varied functions offers a cost-effective solution for high-performance, low-power processing, which aligns well with the needs of Electric Vehicles (EVs). If you missed the detailed presentation by Casey Ng, Product Marketing Director at Cadence at CadenceLIVE 2024, register at the CadenceLIVE On-Demand site to access it and other insightful presentations. Stay ahead of the curve and explore the future of innovative electronics with us. Cadence Infotainment Solution: Leading the Charge Cadence Tensilica HiFi DSPs play a crucial role in enhancing audio capabilities in vehicle infotainment systems. They support applications like voice recognition, hands-free calling, and deliver immersive audio experiences. This technology is also paramount for features such as active noise control, which reduces road and cabin noise, and acoustic event detection for identifying unusual sounds like broken glass. One notable innovation is the "audio bubble," enabling personalized audio zones within the vehicle, ensuring passengers enjoy distinct audio settings. Cadence HiFi DSP technology enriches the driving experience for electric vehicles by mimicking traditional engine sounds, while its advanced audio processing ensures optimal performance across various digital radio standards. It significantly contributes to noise reduction, hence improving the cabin experience. Integrating a Double Precision Floating Point Unit (FPU) stands out, as it upgrades audio performance and Signal-to-Noise Ratio (SNR) through efficient 64-bit processing, allowing control over numerous speakers without hitches. These advancements distinguish the DSP as an essential tool in evolving infotainment systems, offering unmatched performance and adaptability. Tensilica HiFi processors, crucial to advanced infotainment SoCs, serve as efficient offload processors, augmenting real-time execution and energy efficiency. Cadence’s ecosystem, with over 200 codecs and software partnerships, propels the evolution of innovative infotainment systems. Introducing the HiFi 5s DSP marks a new era in connected car experiences, setting the stage for groundbreaking advancements. Exploring Tomorrow with HiFi 5s DSP Technology The HiFi 5s represents the apex of audio and AI digital signal processing performance. Built on the Xtensa LX8 platform, it introduces capabilities like auto-vectorization, which allows standard C code to be automatically optimized for performance. This synergy of hardware and software co-design marks a significant step forward in DSP technology. By leveraging its extended Single Instruction, Multiple Data (SIMD) capabilities alongside features like a double-precision floating-point unit (DP_FPU), the HiFi 5s delivers unparalleled precision and speed improvements in signal and audio processing tasks. Equally notable are its branch prediction and L2 cache enhancements, which optimize system performance by refining the control code execution and recognizing codec efficiency. The application of such enhancements are particularly beneficial in real-world scenarios. AI-Powered Audio Cadence's focus on AI integration with the HiFi 5s demonstrates significant improvements in audio clarity through AI-powered solutions. AI models learn from real-world data and adapt dynamically, while classic DSP algorithms rely on fixed rules. AI can be fine-tuned for specific scenarios, whereas classic DSP lacks flexibility. AI handles extreme and marginal noise patterns better, generalizes well across different environments, and is robust against varying noise characteristics. Cadence's dedication to artificial intelligence marks a pivotal shift in audio processing. Traditional DSP algorithms, bound by rigid rules, are eclipsed by AI's ability to learn dynamically from real-world data. This adaptability equips AI models to tackle challenging noise patterns and offer unmatched clarity even in noisy environments, making them ideal for automotive and consumer audio applications. Realtime AI-Optimized Speech Enhancements by OmniSpeech and ai|coustics OmniSpeech Our partner, OmniSpeech, has advanced AI-based audio processing that enhances the performance of audio software, specifically for omnidirectional and dipole microphones. Impressively, their technology operates with less than 32MHz and requires only 418kB of memory. Test results show that background noise is significantly reduced when AI employs a single omnidirectional microphone, outperforming non-AI solutions. Additionally, when using a dipole microphone with AI, there is a 3.5X improvement in the weighted Signal-to-Noise Ratio (SNR) and more than a 28% increase in the Global Mean Opinion Score (GMOS) across various background noise. ai|coustics ai|coustics, a Cadence partner specializing in advanced audio technologies, utilizes real-time AI-optimized speech enhancement algorithms. They leverage an extensive speech-quality dataset containing thousands of hours and 100 languages to transform low-quality audio into studio-grade audio. Their process includes: De-reverb, which eliminates room resonances, echoes, and reflections Removing artifacts from downsampling and codec compression Dynamic and adaptive background noise removal Reviving audio materials with analog and digital distortions Providing support for all languages, accents, and a variety of speakers Applications include: Automotive: Enhances clarity of navigation commands and communication for driver safety Consumer audio: Improves voice clarity for better dialogue understanding in TV programs. Optimizes speech intelligibility in communication for both uplink and downlink audio streams Smart IoT: Boosts voice command detection and response quality Performance Enhancements The advancements in branch prediction and L2 cache integration have significantly boosted performance metrics across various systems. With HiFi 5s, branch prediction increases codec efficiency by an average of 5%, reaching up to 16% in optimal conditions. L2 cache improvements have drastically enhanced system-level performance, evidenced by a 2.3X boost in EVS decoder efficiency. Adding MACs and imaging ISA in imaging use cases has led to substantial advancements. When comparing HiFi 5s to HiFi 5, imaging ISA performance improvements range with >60% average performance improvements. The Crescendo of the Future As Cadence continues to blaze trails in DSP technology, the HiFi 5s emerges as the quintessential solution for consumer and automotive audio use cases. With a robust framework for auto-vectorization, an unmatched double-precision FPU, AI-driven audio solutions, and comprehensive system enhancements, Cadence is orchestrating the next era of audio processing, where every note is clearer, every sound richer, and every experience more engaging. It is not just the future of audio—it's the future of how we experience the world around us. Discover how Cadence Automotive Solutions can transform your business today! Full Article Automotive DSP infotainment Tensilica HiFi 5s
ng Driving Innovation: Cadence's Cutting-Edge IP on TSMC's N3 Node By community.cadence.com Published On :: Mon, 14 Oct 2024 16:00:00 GMT Staying ahead of the curve is essential to meeting customer needs. Cadence has consistently demonstrated its commitment to innovation, and its latest IP portfolio available on TSMC's 3nm (N3) process is no exception. Today, rapid advancements in AI/ML, hyperscale computing (HPC), and the automotive industry are driving significant changes in technology. Let's explore the impressive array of IP that Cadence offers on this advanced node. Memory Solutions: High-Speed and Power-Efficient Cadence's DDR5 12.8G MRDIMM IP supports the highest speed grade Gen2 MRDIMMs and features a fully hardened PHY optimized to the customer's floorplan. The LPDDR5X IP is silicon-proven at 9.6Gbps and is ideal for power-sensitive applications, offering a fully integrated memory subsystem. GDDR7: Leading the Way in Graphics Memory Cadence has achieved a significant milestone with the world's first silicon-proven GDDR7 IP, supporting data rates up to 32Gbps. This IP offers the best price/performance ratio for AI interfaces, making it a game-changer in the graphics memory domain. PCIe and CXL Solutions: Robust and Reliable Cadence's PCIe 3.0 IP is a mature and production-proven solution available across a wide range of process nodes from 28nm to 3nm. It offers a versatile multi-link architecture for optimum SoC configurability and flexible use cases. The PCIe 6.0 and CXL 3.x solutions are silicon-proven, power-optimized, and highly robust, with jitter-tolerant capabilities. These IP are the only subsystem proven with eight lanes of controller and PHY in silicon, ensuring interoperability with leading test vendors and OEMs. UCIe PHY: Setting New Standards The UCIe PHY IP from Cadence are set to be generally available after successful silicon characterization in both standard and advanced package options on the TSMC N3 (3nm) process. These IP demonstrate significantly better power, performance, and area (PPA) metrics than the specifications, with a bit error rate (BER) better than 1E-27 compared to the spec of 1E-15. The power consumption is also notably lower than the spec limit, ensuring a simpler integration with a best-in-class power profile. 112G PHY IP: Pushing the Boundaries of Performance Cadence's 112G PHY IP are designed to meet the demands of high-speed data transmission. The 112G-ULR PHY IP, characterized in the 3nm process, showcases exceptional performance with support for insertion loss over 45dB at data rates ranging from 1.25Gbps to 112.5Gbps. This IP is optimized for both power and area, making it a versatile choice for various applications. The 112G-VSR/MR PHY IP also stands out with its excellent power and performance metrics, making it ideal for short-reach applications and optical interconnects. Additionally, the 112G PAM4 PHY solutions cater to hyperscale, AI, HPC, and optics applications, featuring a mature DSP-based SerDes architecture with advanced techniques such as reflection cancellation. Cadence's IP portfolio on TSMC N3 shows innovation and expertise to solve today's design challenges. From high-speed PHY IP to robust PCIe and CXL solutions and advanced memory IP, Cadence continues to lead the way in semiconductor IP development. These solutions not only meet but exceed industry standards, ensuring that customers can confidently achieve their design goals. Stay tuned for more updates on Cadence's groundbreaking advancements in semiconductor technology. Learn more about Cadence IP and other silicon solutions. Full Article ucie Memory LPDDR ip cores PCIe DDR GDDR7
ng How to see placement reasons of cells? How to highlight timing start/end points? By community.cadence.com Published On :: Tue, 23 Apr 2024 13:37:57 GMT I am working with innovus on a huge design. I found some cells are placed far away from both timing start points and timing end points. I suspect some other timing paths may be near-critical that results in this sub-optimal cell placement; or innovus has to place the cell far away due to congestion of placement or routing. Is there a way to see why innovus places/moves the cell during place_opt_design or ccopt_design? Also, is there a way to highlight all timing start points or timing end points that go through a cell? There may be thousands of timing paths through this cell. I tried using report_timing and timing debugger but it is very painful to click the highlight box and highlight the timing paths one by one. Thank you for your help! Full Article
ng Change rout design metal layer effort By community.cadence.com Published On :: Tue, 30 Apr 2024 19:10:22 GMT Hi, Is there any way to instruct the tool to reduce the low metals effort and route more on top layers? Full Article
ng Specifying the placement of submodules in the top module during the pnr using Innovus By community.cadence.com Published On :: Fri, 10 May 2024 13:16:51 GMT Hi everyone, I'm designing a digital chip that will be fabricated. I have a HDL top module that includes several submodules inside it. I want to define the position of some of the submodules during the PnR so that later I can specify there positions in the Micrograph photo after the IC fabrication. When I perform the PnR using Innovus, I always got a layout shape where the submodules seems to be flatted. I wonder if there is a way to specify the placement of each submodule in my top module (maybe in the tcl file) during the PnR so later I can define there positions in the micrograph photo. Thanks in Advance! Full Article
ng removing cdn_loop_breaker from the genus synthesis netlist By community.cadence.com Published On :: Wed, 12 Jun 2024 04:54:24 GMT I am trying to remove the cdn_loop_breaker cells from the netlist. When I tried the below 2 things, genus synthesis tool removing the cdn_loop_breaker cells but while connecting the cdn_loop_breaker cell input to its proper connection, its somehow misleading the connectionsThings i tried:1. remove_cdn_loop_breaker -instances *cdn_loop_breaker*then i just ran remove_cdn_loop_breaker comand without the -instances switch2. remove_cdn_loop_breaker both of the above things are not providing the proper connections after removing the loop_breaker_cellscan anyone suggest the best possible workaround for this please? Full Article
ng Tempus ECO initial setup summary not matching timing report results By community.cadence.com Published On :: Sat, 29 Jun 2024 01:51:01 GMT We are currently setting up the Tempus flow and have ran into some mismatched data regarding ECO and timing reports. I generated a timing report before running ECO and saw six total setup violations. When running opt_signoff -setup, the initial setup summary that was printed in the shell only showed one violation. I can see that violation from the initial setup summary in my pre-ECO timing report and it is not the worst path. Upon further investigation, I forced the tool to try to fix setup on one of the other five violations from the timing report using the opt_signoff_select_setup_endpoints attribute and the tool said that the endpoint had positive slack and would be ignored. Has anyone experienced something like this before? Full Article
ng Innovus post CTS Timing Analysis issue By community.cadence.com Published On :: Mon, 29 Jul 2024 05:57:40 GMT While performing the timing analysis after post-CTS. We are getting warnings on all input ports defined in our design. **WARN: (IMPESI-3095): Net: 'CLK' has no receivers. SI analysis is not performed.**WARN: (IMPESI-3095): Net: 'RESET' has no receivers. SI analysis is not performed.**WARN: (IMPESI-3095): Net: 'UART_BAUD_SWITCHES_2' has no receivers. SI analysis is not performed.**WARN: (IMPESI-3095): Net: 'UART_BAUD_SWITCHES_1' has no receivers. SI analysis is not performed. We've checked our design netlist, and all the required connections are present for the input ports through pads. We are using Innovus version: v21.12 Full Article
ng cut_spacing violation By community.cadence.com Published On :: Mon, 29 Jul 2024 15:44:57 GMT I am getting the cut_spacing violation in the power plan, my design has two power rails, and the via is not formed for two rails, only one rail getting via, I used edit power via and modified the cut_space violation. how to solve this problem. Full Article
ng Clock doubler SDC modelling By community.cadence.com Published On :: Tue, 20 Aug 2024 10:55:17 GMT Hi all, I'm trying to model the clock of a clock doubler. The doubler consists of a delay cell and an XOR gate, which generates a pulse on both the rising and falling edge of the input clock. I've created a simple module to evaluate this. In this case, DEL1 and XOR2 are standard library cells. There is a don_touch constraint on both library cells as well as on clk_d. module top (input wire clk,output reg Q); //Doublerwire clk_d;wire clk_2x; DEL1 u_delay (.I(clk),.Z(clk_d));XOR2 u_xor (.A1(clk),.A2(clk_d),.Z(clk_2x)); //FF for connecting the clock to some leaf:always @(posedge clk_2x) Q<=~Q; endmodule My SDC looks like this: create_clock [get_ports {clk}] -name clk_i -period 100set_clock_latency -rise 0.1 [get_pins u_xor/Z]set_clock_latency -fall 0.4 [get_pins u_xor/Z]create_generated_clock -name clk_2x -edges {1 1 2 2 3} -source clk [get_pins u_xor/Z] The generated clock is correctly generated but the pulse width is zero. I would be expecting that the pulse width is the difference between fall and rise latency but is not applied: report_clocks: report_clocks -generated: clk_2x is disconnected from the FF after syn_generic. What can I do to model some minimum pulse width? Will innovus later on model this correctly with the delay of DEL1? Full Article
ng Always on buffering By community.cadence.com Published On :: Thu, 31 Oct 2024 17:22:01 GMT Hello All,How do we control the Always on buffering for a power domain called B in Power domain A.here B-power domain nets going through A , hence tool is inserting Always on buffers.How do we avoid this specific power domain ? Thanks,Bshaik Full Article
ng Performing a net trace in a CDL file By community.cadence.com Published On :: Tue, 15 Oct 2024 10:25:39 GMT Hi, I am looking to perform a net trace in a CDL file. There is a net at a lower level and would like to know the net it is connected to at the top level. Please let me know if there is a way to analyze the CDL file to perform this net trace. Thanks, Mallikarjun. Full Article
ng Hiding child instances By community.cadence.com Published On :: Thu, 17 Oct 2024 00:29:06 GMT I'm trying to do what I believe should be a very simple and straightforward thing but after much reading appears to be quite complicated. I'm test-benching the digital portion of a mixed-signal circuit that's instantiated a few hundred times. Each instance has some digital controls, and an analog portion. To greatly speed up the simulation, I'd like to hide the analog portion, which is neatly contained in one or two cell views deep down the hierarchy, and then unhide it after simulation has ended so it doesn't mess up other peoples' sims Just as an example, say there's an op-amp that from the top level is contained in instance "I<0:511>/I3/I15/I0". First off, I don't know how to iterate through the 512 instantiations of the top level cell, but let's say we're just working with the I0 instance. I thought it would just be schIgnore(?objectId "I<0:511>/I3/I15/I0" ?setIgnore t) Of course this doesn't work. I can get the top level cell dbId with cv = dbOpenCellViewByType("library" "cell" "schematic" "" "a") And then I can grab the instance ID with inst = dbFindAnyInstByName(cv "I0") This gives me something, but then I'm lost from here. If I use the ~>master to get an Id from inst, I cannot recursively use dbFindAnyInstByName to traverse down the hierarchy. Also the value this returned seems to be meaningless, it can't be used by the schIgnore command. I'm not sure what the schIgnore command is actually even looking for. So I guess I'm trying to loop through two things, one is to traverse down the hierarchy and grab the ID of a child instance so I can schIgnore it, and another is to iterate through all the top level instances to hide the child instance within each of them. Full Article
ng How to add custom indicators to Dynamic Display measuring HUD By community.cadence.com Published On :: Wed, 23 Oct 2024 20:31:55 GMT I am attempting to use dbGetNeighbor() function inside the dynamic display HUD so that the distance to the next metal on that layer could be viewed. Think of another line in this dynamic table here... My SKILL code is essentially the following: procedure(getNearestNeighborOnMetal(cv) let((direction tmpBoundingBox) direction = internal_function() tmpBoundingBox = dbCreateRect(geGetEditCellView() "tmp" list(hiGetCommandPoint() hiGetCommandPoint())) car(dbGetNeighbor(geGetEditCellView() tmpBoundingBox direction)) )) this returns the distance to the closest metal based on some tests. Next, I try to register this function to work in the Dynamic Display / Info Balloon world by executing odcRegisterCustomFunc() for each and every object type (I know, absurd, but trying to debug) In the dynamic display menu, I toggle the "Custom SKILL Function" check in layoutXL, then hit apply, then OK. After this I find I am unable to view the changes reflected in any info balloons or in the drawing HUD (above) for this wire. I have tried replacing my function with the sample "customFunc" from the odcRegisterCustomFunc() documentation and was still unable to produce any new output. Any help diagnosing the use of this feature would be very much appreciated Full Article
ng Virtuoso Fluid Guard Ring Layout error "do_something=nil" By community.cadence.com Published On :: Thu, 24 Oct 2024 07:22:30 GMT Hello, When I draw a Fluid Guard Ring in Virtuoso, the layout is not visible, and instead, "do_something=nil" appears. When I check the details with Q, it shows the same information as a regular NFGR guard ring, and Ctrl+F also displays the instance name, just like with a regular NFGR. Additionally, the Pcells of Fluid Guard Rings from previous projects appear broken. The version I’m currently using is not different from the one used in the past. Even when I access the same version as the one used during the project, the Pcells still appear broken. These two issues are occurring, and I’m not sure what to check. I would greatly appreciate it if you could assist me in resolving this issue. // Reinstalling the PDK resolved the issue! I’m not exactly sure what the problem was, but I suspect there might have been an internal issue with permissions or the PDK path. Full Article
ng Refer instances and vias to technology library during importing By community.cadence.com Published On :: Sun, 27 Oct 2024 04:30:15 GMT Hi, My query is regarding importing of layout. After importing, we see that the imported transistor instances and vias are all referring to the library in which they are imported, instead of referring to the technology library. Please let me know how we can refer them to the technology library. Will surely provide more details if my query is unclear. Thanks, Mallikarjun. Full Article
ng Error ASSEMBLER-1600 when running script with two different MC simulations By community.cadence.com Published On :: Tue, 29 Oct 2024 08:59:49 GMT Hello Community, I have encountered an issue that is a mystery to me and hope somebody could give me a clue about what is happening in Cadence and maybe even a solution? I am running a test scripted in a SKILL file that sequentially opens two different projects with MC analyses and in between I get an error message box and also multiple logs in CIW with exactly the same text. Both projects run a simulation with a call like this: historyName = maeRunSimulation(?session sessionName ?waitUntilDone t) After this the script closes the current project, opens the next project and executes the same line with maeRunSimulation() for the second project. Then immediately this error message happens, and also is logged repeatedly in the CIW window The message box looks like this: The logs I get in CIW: nilhiCancelProgressBox(_axlNetlistCreateProgressBar)nilhiCancelProgressBox(_axlUILoadForm)nilwhen(dwindow('axlDataViewessWindow1) hiMapWindow(dwindow('axlDataViewessWindow1)))twhen(dwindow('axlRunSummaryessWindow1) hiMapWindow(dwindow('axlRunSummaryessWindow1)))tERROR (ASSEMBLER-1600): Cannot find an active session named fnxSession0.You can only modify an ADE Assembler session that is active.Perhaps the session name was misspelled or has not yet been created. Verify the session name matches an existing ADE Assembler session. 1> ERROR (ASSEMBLER-1600): Cannot find an active session named fnxSession0.You can only modify an ADE Assembler session that is active.Perhaps the session name was misspelled or has not yet been created. Verify the session name matches an existing ADE Assembler session. *WARNING* hiDisplayAppDBox: modal dbox 'adexlMessageDialog' is already displayed!ERROR (ASSEMBLER-1600): Cannot find an active session named fnxSession0.You can only modify an ADE Assembler session that is active.Perhaps the session name was misspelled or has not yet been created. Verify the session name matches an existing ADE Assembler session. *WARNING* hiDisplayAppDBox: modal dbox 'adexlMessageDialog' is already displayed!ERROR (ASSEMBLER-1600): Cannot find an active session named fnxSession0.You can only modify an ADE Assembler session that is active.Perhaps the session name was misspelled or has not yet been created. Verify the session name matches an existing ADE Assembler session. Full Article
ng SKILL regex pattern matching By community.cadence.com Published On :: Fri, 01 Nov 2024 08:30:50 GMT Hi, I have a string "[@global_vddi:%:vddi!]" which I need to process to remove "@[]" chars. The desired result is "global_vddi:%:vddi!". I tried the following in CIW netExpr = "[@global_vddi:%:vddi!]"rexCompile("\([a-zA-Z0-9_:!%]+\)")trexExecute(netExpr)trexSubstitute( "\0" )"global_vddi:%:vddi!" and I achieved the desired value. I added the same code to my script but it didn't work. In my script rexExecute returns 't' but rexSubstitute returns 'nil' Here is the snippet from my script netExpr = dbGetTermNetExpr(term) if(netExpr then rexCompile("\([a-zA-Z0-9_:!%]+\)") rexExecute(netExpr) netExpr1 = rexSubstitute( "\0" ) ... . ..) and trace log showing the variable values as the code executes stopped before evaluating dbGetTermNetExpr(term)after evaluating dbGetTermNetExpr(term)==> "[@global_vddi:%:vddi!]"after evaluating (netExpr = dbGetTermNetExpr(term))==> "[@global_vddi:%:vddi!]"stopped before evaluating if(netExpr then rexCompile("\([a-zA-Z0-9_:!%]+\)") rexExecute(netExpr) (netExpr1 = rexSubstitute("\0")) ... )stopped before evaluating rexCompile("\([a-zA-Z0-9_:!%]+\)")after evaluating rexCompile("\([a-zA-Z0-9_:!%]+\)")==> tstopped before evaluating rexExecute(netExpr)after evaluating rexExecute(netExpr)==> tstopped before evaluating (netExpr1 = rexSubstitute("\0"))stopped before evaluating rexSubstitute("\0")after evaluating rexSubstitute("\0")==> nil|[2]netExpr1 set to nil, was nil Any help or suggestions as to why the code executes differently in CIW and when called from a SKILL script file will be much appreciated. I also tried a different approach using rexReplace instead of rexSubstitute but couldn't get the regex pattern correct. The code I tried in CIW using rexReplace is as follows a = "[@global_vddi:%:vddi!]""[@global_vddi:%:vddi!]"rexCompile("\([@\[\]]*\)")trexReplace(a "" 0)"global_vddi:%:vddi!]" Only '@[' get replaced and ']' is still present. The regex pattern contains '\]' to match the closing square bracket yet it is not replaced. Please let me know what I'm missing in these 2 scenarios. Any help is much appreciated!! Regards, Confused SKILL user Full Article
ng DRC warning when use abConvertPolygonToPath.ils code By community.cadence.com Published On :: Mon, 04 Nov 2024 21:34:25 GMT Hi All, I'm using a code (abConvertPolygonToPath.ils) that I found in other posts to convert a rect object to a path object inside a pcell code, but when I try to run a DRC, the layout export fails due to a warning message, here is the log message *WARNING* (DB-270001): Pcell evaluation for 18A_asaavedr/lay_mesh_BM0_BM4_3p6_3p6/layout has the following error(s): *WARNING* (DB-270002): ("eval" 0 t nil ("*Error* eval: undefined function" abConvertPolygonToPath)) ERROR (XOASIS-231): Pcell evaluation failed for '18A_asaavedr/lay_mesh_BM0_BM4_3p6_3p6/layout' because the Pcell SKILL code contains either a syntax error or an unsupported XOasis function. Check the standard output or the Virtuoso log file for more information. Cadence recommends correcting the Pcell SKILL code to resolve the issue. However, to ignore these errors and continue the translation, you may use the 'ignorePcellEvalFail' option. INFO (XOASIS-282): Translation Failed. '1' error(s) and '3' warning(s) found. And when compile the code I get the following message: *WARNING* defgeneric function already defined - abConvertPolygonToPath I will aprreciate any help in how to waive this error, or fix it. Thank you Full Article
ng Flattening techLib VIA0/VIA1 By community.cadence.com Published On :: Tue, 05 Nov 2024 06:54:16 GMT Hi Team, I am using the following command in my SKILL script to flatten the hierarchical layouts, it's working fine for all the instances and mosaics but not for techLib via's please help me with the command to use for flattening the techLib via. dbFlattenInst( inst 2 nil) dbFlattenInst( inst1 2 t t nil nil t t) Regards, MT. Full Article
ng Disappearing toolbar or docked menu By community.cadence.com Published On :: Wed, 06 Nov 2024 20:47:05 GMT Disappearing toolbar or docked menu Is there a way for the toolbar or floating menu from disappearing when a cells tab is added to a window? I have created a skill toolbar and it disappeared when I add another cell or tab to a window. The only toolbars that stay are the ones I have defined in the Layout.toolbar file. Do I have to add a trigger to keep the toolbars visible or not disappearing from the window? Cadence version IC23.1-64b.ISR7.27 Paul Full Article
ng Destructive form of "cons" - efficiently prepending an item to a procedure's argument which is a list By community.cadence.com Published On :: Tue, 12 Nov 2024 18:20:40 GMT Hello, I was looking to destructively and efficiently modify a list that was passed in as an argument to a procedure, by prepending an item to the list. I noticed that cons lets you do this efficiently, but the operation is non-destructive. Hence this wouldn't work if you are trying to modify a function's list parameter in place. Here is an example of trying to add "0" to the front of a list: procedure( attempt_to_prepend_list(l elem) l = cons(elem l) ) a = list(1 2 3) ==> (1 2 3)attempt_to_prepend_list(a 0)==> (0 1 2 3)a==> (1 2 3) As we can see, the original list is not prepended. Here is a function though which achieves the desired result while being efficient. Namely, the following function does not create any new lists and only uses fast methods like cons, rplacd, and rplaca procedure( prepend_list(l elem) ; cons(car(l) cdr(l)) results in a new list with the car(l) duplicated ; we then replace the cdr of l so that we are now pointing to this new list rplacd(l cons(car(l) cdr(l))) ; we replace the previously duplicated car(l) with the element we want rplaca(l elem) ) a = list(1 2 3) ==> (1 2 3)prepend_list(a 0)==> (0 1 2 3)a==> (0 1 2 3) This works for me, but I find it surprising there is no built-in function to do this. Am I perhaps overlooking something in the documentation? I know that tconc is an efficient and destructive way to append items to the end of a list, but there isn't an equivalent for the front of the list? Full Article
ng μWaveRiders: Setting Up a Successful AWR Design Environment Design - UI and Simulation By community.cadence.com Published On :: Thu, 25 Aug 2022 02:26:00 GMT When starting a new design, it's important to take the time to consider design recommendations that prevent problems that can arise later in the design cycle. This two-part compilation of guidelines for starting a new design is the result of years of Cadence AWR Design Environment platform Support experience with designs. Pre-design decisions for user interface, simulation, layout, and library configuration lay the groundwork for a successful and efficient AWR design. This blog covers the user interface (UI) and simulation considerations designers should note prior to starting a design.(read more) Full Article Circuit simulation multi-processor AWR Design Environment test bench EM simulation UI RF design X-model microwave office Visual System Simulator (VSS) EM-based model
ng New Training Courses for RF/Microwave Designers Featuring Cadence AWR Software By community.cadence.com Published On :: Mon, 03 Oct 2022 03:00:00 GMT Cadence AWR Design Environment Software Featured in Multiple Training Course Options: Live and Virtual Starting in October(read more) Full Article featured AWR Design Environment microwave design
ng μWaveRiders: Scoring Goals with the Latest AWR Design Environment Optimizer By community.cadence.com Published On :: Mon, 21 Nov 2022 09:55:00 GMT AWR V22.1 software introduces the Pointer-Hybrid optimization method which uses a combination of optimization methods, switching back and forth between methods to efficiently find the lowest optimization error function cost. The optimization algorithm automatically determines when to switch to a different optimization method, making this a superior method over manual selection of algorithms. This method is particularly robust in regards to finding the global minima without getting stuck in a local minima well.(read more) Full Article featured AWR Design Environment Pointer-Hybrid optimizer RF design microwave office global minima Optimization cost Optimizer goals Optimizer methods
ng μWaveRiders: Setting Up a Successful AWR Design Environment Design - Layout and Component Libraries By community.cadence.com Published On :: Fri, 16 Dec 2022 20:15:00 GMT When starting a new design, it's important to take the time to consider design recommendations that prevent problems that can arise later in the design cycle. This two-part compilation of guidelines for starting a new design is the result of years of Cadence AWR Design Environment platform Support experience with designs. Pre-design decisions for user interface, simulation, layout, and library configuration lay the groundwork for a successful and efficient AWR design. This blog, part 2, covers the layout and component library considerations designers should note prior to starting a design.(read more) Full Article RF Simulation Circuit simulation AWR Design Environment awr Component library Layout microwave office Visual System Simulator (VSS)
ng Knowledge Booster Training Bytes - The Close Connection Between Schematics and Their Layouts in Microwave Office By community.cadence.com Published On :: Wed, 04 Jan 2023 04:03:00 GMT Microwave Office is Cadence’s tool-of-choice for RF and microwave designers designing everything from III-V 5G chips, to RF systems in board and package technologies. These types of designs require close interaction between the schematic and its layout. A new Training Byte demonstrates how the schematic-layout connections is built into Microwave Office.(read more) Full Article RF RF Simulation RF designer AWR customization RF design microwave office
ng Knowledge Booster Training Bytes - Working with Data Sets in Microwave Office By community.cadence.com Published On :: Fri, 06 Jan 2023 19:39:00 GMT Data sets are a powerful and easy-to-use feature in Microwave Office. Data can be effortlessly be swapped in graphs, and circuit schematics.(read more) Full Article RF Simulation AWR Design Environment awr AWR customization AWR Microwave Office microwave office
ng Training Webinar: Microwave Office - Comprehensive RF and Microwave Design Creation By community.cadence.com Published On :: Tue, 13 Jun 2023 04:56:00 GMT A training webinar on Microwave Office will be given June 27, 2023. The emphasis will be on EM simulation.(read more) Full Article RF RF Simulation awr EM simulation webinar AWR AXIEM RF design AWR Microwave Office microwave office
ng Training Webinar: Microwave Office: An Integrated Environment for RF and Microwave Design By community.cadence.com Published On :: Thu, 07 Sep 2023 06:08:00 GMT A recording of a training webinar on Microwave Office is available. Topics show the design environment, with special emphasis placed on electromagnetic (EM) simulation. Normal 0 false false false EN-US JA X-NONE ...(read more) Full Article
ng Designing a 30MHz to 1000MHz 10W GaN HEMT Power Amplifier By community.cadence.com Published On :: Tue, 03 Oct 2023 21:17:00 GMT By David Vye, Senior Product Marketing Manager, AWR, Cadence When designing multi-octave high-power amplifiers, it is a challenge to achieve both broadband gain and power matching using a combination of lumped and distributed techniques. One approach...(read more) Full Article AWR Design Environment Power amplifier RF design microwave office
ng Training Insights New Course: Planar EM Simulation in AWR Microwave Office By community.cadence.com Published On :: Mon, 30 Oct 2023 18:44:00 GMT New online training course for AXIEM EM Simulator in AWR Microwave Office is available.(read more) Full Article awr EM simulation AWR AXIEM AWR Microwave Office AXIEM 3D Planar Simulator microwave office
ng Unlock Your RF Engineering Potential with a Cadence AWR Free Academic Trial! By community.cadence.com Published On :: Tue, 04 Jun 2024 09:47:00 GMT Are you ready to revolutionize your RF design experience? Look no further! Cadence AWR software is your gateway to mastering the intricacies of Radio Frequency (RF) circuit design, and now, you can explore its power with our exclusive Free Academic T...(read more) Full Article Cadence Academic Network AWR Design Environment awr TRIAL AWR training RF design
ng Constraining some nets to route through a specific metal layer, and changing some pin/cell placements and wire directions in Cadence Innovus. By community.cadence.com Published On :: Fri, 03 Feb 2023 22:13:10 GMT Hello All: I am looking for help on the following, as I am new to Cadence tools [I have to use Cadence Innovus for Physical Design after Logic Synthesis using Synopsys Design Compiler, using Nangate 45 nm Open Cell Library]: while using Cadence Innovus, I would need to select a few specific nets to be routed through a specific metal layer. How can I do this on Innovus [are there any command(s)]? Also, would writing and sourcing a .tcl script [containing the command(s)] on the Innovus terminal after the Placement Stage of Physical Design be fine for this? Secondly, is there a way in Innovus to manipulate layout components, such as changing some pin placements, wire directions (say for example, wire direction changed to facing east from west, etc.) or moving specific closely placed cells around (without violating timing constraints of course) using any command(s)/.tcl script? If so, would pin placement changes and constraining some closely placed cells to be moved apart be done after Floorplanning/Powerplanning (that is, prior to Placement) and the wire direction changes be done after Routing? While making the necessary changes, could I use the usual Innovus commands to perform Physical Design of the remaining nets/wires/pins/cells, etc., or would anything need modification for the remaining components as well? I would finally need to dump the entire design containing all of this in a .def file. I tried looking up but could only find matter on Virtuoso and SKILL scripting, but I'd be using Innovus GUI/terminal with Nangate 45 nm Open Cell Library. I know this is a lot, but I would greatly appreciate your help. Thanks in advance. Riya Full Article
ng In Simvision, how do I change the waveform font size of the signal names? By community.cadence.com Published On :: Mon, 27 Mar 2023 09:01:44 GMT Hi Cadence, I use simvision 20.09-s007 but my computer screen resolution is very high. As a result, the texts are too small. In ~/.simvision/Xdefaults I changed that number to 16, from 12. But the signal names in the waveform traces don't reflect the change. Simvision*Font: -adobe-helvetica-medium-r-normal--16-*-*-*-*-*-*-* Other .font changes seem to reflect on the simvision correctly, except the signal names. How do I fix that? I dont mind a single variable to change all the texts fonts to 16. Thank you! PS: I found the answer with another post. I change Preference/Waveform/Display/Signal Height. Full Article
ng Detailed waveform dumping for selected waveform By community.cadence.com Published On :: Wed, 23 Aug 2023 15:54:14 GMT I'm currently trying to explore the verilog simulation option in cadence. One thing that comes to my mind that if there exists a way in cadence workflow to dump selected register/wire's waveform during the simulation. Are there any additional tools needed apart from xcelium, is there a tutorial or specific training course for this aspect. I glance through Xcelium Simulator Course Version 22.09, but it seems not having related context. I know in Synopsys's workflow, it can be realized using verdi & fsdb in the command line as follows: if (inst.CTRL_STATE==STATE_START_TO_DUMP) $fsdbDumpvars(0, inst_1.reg_0); end Thanks in advance! Full Article
ng Regarding the loading of waveform signals in the waveform windown using the tcl command By community.cadence.com Published On :: Mon, 26 Feb 2024 09:26:52 GMT Hello, I am trying to load some of the signals of the design saved in the signals.svwf to the waveform windown via the tcl file, I am using the following commands but nothing works, Can you please help -submit waveform loadsignals -using "Waveform 2" FB1.svwf but it gives me the below error -submit waveform new -reuse -name Waveforms Full Article
ng Conformal CEC checking By community.cadence.com Published On :: Tue, 19 Mar 2024 21:04:55 GMT Below is showing my Master.v ******************************************************************************************************************************************************************************************************************** ///////ALUmodule ALU ( input [31:0] A,B, input[3:0] alu_control, output reg [31:0] alu_result, output reg zero_flag); always @(*) begin // Operating based on control input case(alu_control) 4'b0001: alu_result = A+B; 4'b0010: alu_result = A-B; 4'b0011: alu_result = A*B; 4'b0100: alu_result = A|B; 4'b0101: alu_result = A&B; 4'b0110: alu_result = A^B; 4'b0111: alu_result = ~B; 4'b1000: alu_result = A<<B; 4'b1001: alu_result = A>>B; 4'b1010: begin if(A<B) alu_result = 1; else alu_result = 0; end default: alu_result = A+B; endcase // Setting Zero_flag if ALU_result is zero if (alu_result) zero_flag = 1'b1; else zero_flag = 1'b0; endendmodule/////CONTROL UNIT/* Control unit controls takes opcode, funct7, funct3 of the instruction code to determineand control regwrite in IFU, alu control in ALU to execute proper instruction*//* Control unit controls takes opcode, funct7, funct3 of the instruction code to determineand control regwrite in IFU, alu control in ALU to execute proper instruction*/module CONTROL( input [4:0] opcode, output reg [3:0] alu_control, output reg regwrite_control,memread_control,memwrite_control); always @(opcode) begin case(opcode) 5'b00001: begin alu_control=4'b0001; //add regwrite_control=1; memread_control=0; memwrite_control=0; end 5'b00010: begin alu_control=4'b0010; ///sub regwrite_control=1; memread_control=0; memwrite_control=0; end 5'b00011: begin alu_control=4'b0011; //mul regwrite_control=0; memread_control=0; memwrite_control=1; end 5'b00100: begin alu_control=4'b0100; ///OR regwrite_control=0; memread_control=0; memwrite_control=1; end 5'b00101: begin alu_control=4'b0101; ///AND regwrite_control=1; memread_control=0; memwrite_control=0; end 5'b00110: begin alu_control=4'b0110; ///XOR regwrite_control=0; memread_control=0; memwrite_control=1; end 5'b00111: begin alu_control=4'b0111; ///NOT regwrite_control=0; memread_control=0; memwrite_control=1; end 5'b01000: begin alu_control=4'b1000; //SL regwrite_control=1; memread_control=1; memwrite_control=0; end 5'b11001: begin alu_control=4'b1001; //SR regwrite_control=1; memread_control=1; memwrite_control=0; end 5'b01010: begin alu_control=4'b1010; //COMPARE regwrite_control=1; memread_control=1; memwrite_control=0; end //5'b11010: begin ALU_control=4'b0000; //SW //regwrite_control=1; memread_control=0; memwrite_control=0; //end //5'b01010: begin ALU_control=4'bxxxx; //LW //regwrite_control=0; memread_control=0; memwrite_control=1; //end default : begin alu_control = 4'b0001; regwrite_control=1; memread_control=0; memwrite_control=0; end endcase endendmodule//////DATA MEMORYmodule Data_Mem(input clock, rd_mem_enable, wr_mem_enable,input [11:0] address,input [31:0] datawrite_to_mem,output reg [31:0] dataread_from_mem );reg [31:0] Data_Memory[8:0];initial begin Data_Memory[0] = 32'hFFFFFFFF; Data_Memory[1] = 32'h00000001; Data_Memory[2] = 32'h00000005; Data_Memory[3] = 32'h00000003; Data_Memory[4] = 32'h00000004; Data_Memory[5] = 32'h00000000; Data_Memory[6] = 32'hFFFFFFFF; Data_Memory[7] = 32'h00000000; //Data_Memory[8] = 32'h00000008; //Data_Memory[9] = 32'h00000009; //Data_Memory[10] = 32'h0000000A; //Data_Memory[11] = 32'h0000000B; //Data_Memory[12] = 32'h0000000C; //Data_Memory[13] = 32'h0000000D; //Data_Memory[14] = 32'h0000000E; //Data_Memory[15] = 32'h0000000F; //Data_Memory[16] = 32'h00000010; //Data_Memory[17] = 32'h00000011; //Data_Memory[18] = 32'h00000012; //Data_Memory[19] = 32'h00000013; //Data_Memory[20] = 32'h00000014; //Data_Memory[21] = 32'h00000015; //Data_Memory[22] = 32'h00000016; //Data_Memory[23] = 32'h00000017; //Data_Memory[24] = 32'h00000018; //Data_Memory[25] = 32'h00000019; //Data_Memory[26] = 32'h0000001A; //Data_Memory[27] = 32'h0000001B; //Data_Memory[28] = 32'h0000001C; //Data_Memory[29] = 32'h0000001D; //Data_Memory[30] = 32'h0000001E; Data_Memory[31] = 32'h0000001F; end always@(posedge clock) begin if(wr_mem_enable) begin Data_Memory[address] <= datawrite_to_mem; end else if(rd_mem_enable) begin dataread_from_mem <= Data_Memory[address]; end else begin dataread_from_mem <= 32'h00000000; end endendmodule /////INST MEM/* */module INST_MEM( input [31:0] PC, input reset, output [31:0] Instruction_Code); reg [7:0] Memory [43:0]; // Byte addressable memory with 32 locations assign Instruction_Code = {Memory[PC+3],Memory[PC+2],Memory[PC+1],Memory[PC]}; initial begin // Setting 32-bit instruction: add t1, s0,s1 => 0x00940333 Memory[3] = 8'b0000_0000; Memory[2] = 8'b0000_0001; Memory[1] = 8'b0111_1100; Memory[0] = 8'b0000_0001; // Setting 32-bit instruction: sub t2, s2, s3 => 0x413903b3 Memory[7] = 8'b0000_0000; Memory[6] = 8'b0000_0110; Memory[5] = 8'b1000_1111; Memory[4] = 8'b1110_0010; // Setting 32-bit instruction: mul t0, s4, s5 => 0x035a02b3 Memory[11] = 8'b0000_0000; Memory[10] = 8'b0000_0101; Memory[9] = 8'b0111_1100; Memory[8] = 8'b0000_0011; // Setting 32-bit instruction: or t3, s6, s7 => 0x017b4e33 Memory[15] = 8'b1111_1111; Memory[14] = 8'b1111_0100; Memory[13] = 8'b1010_0000; Memory[12] = 8'b1010_0100; // Setting 32-bit instruction: and Memory[19] = 8'b0000_0000; Memory[18] = 8'b0010_1001; Memory[17] = 8'b0001_1101; Memory[16] = 8'b0010_0101; // Setting 32-bit instruction: xor Memory[23] = 8'b0000_0000; Memory[22] = 8'b0001_1000; Memory[21] = 8'b0000_1101; Memory[20] = 8'b0110_0110; // Setting 32-bit instruction: not Memory[27] = 8'b0000_0000; Memory[26] = 8'b0010_1001; Memory[25] = 8'b0011_1101; Memory[24] = 8'b1100_0111; // Setting 32-bit instruction: shift left Memory[31] = 8'b0000_0000; Memory[30] = 8'b0101_0111; Memory[29] = 8'b1100_0110; Memory[28] = 8'b0000_1000; // Setting 32-bit instruction: shift right Memory[35] = 8'b0000_0000; Memory[34] = 8'b0110_1010; Memory[33] = 8'b1101_0010; Memory[32] = 8'b0111_1001; /// Setting 32-bit instruction: Campare Memory[39] = 8'b0000_0000; Memory[38] = 8'b0111_1010; Memory[37] = 8'b1101_0010; Memory[36] = 8'b0110_1010; /// Setting 32-bit instruction: Memory[43] = 8'b0000_0000; Memory[42] = 8'b0111_0111; Memory[41] = 8'b1101_0010; Memory[40] = 8'b0111_0010; end endmodule//IFU/*The instruction fetch unit has clock and reset pins as input and 32-bit instruction code as output.Internally the block has Instruction Memory, Program Counter(P.C) and an adder to increment counter by 4, on every positive clock edge.*/module IFU( input clock,reset, output [31:0] Instruction_Code);reg [31:0] PC = 32'b0; // 32-bit program counter is initialized to zero always @(posedge clock, posedge reset) begin if(reset == 1) //If reset is one, clear the program counter PC <= 0; else PC <= PC+4; // Increment program counter on positive clock edge end // Initializing the instruction memory block INST_MEM instr_mem(.PC(PC),.reset(reset),.Instruction_Code(Instruction_Code));endmodule///MUXmodule Mux_2X1 ( input mem_rd_select, // rd_mem_enable input wire [31:0] dataread_from_mem, regdata2, output reg [31:0] mux_out);always @(mem_rd_select or dataread_from_mem or regdata2) begin if (mem_rd_select == 1) mux_out <= dataread_from_mem ; else mux_out <= regdata2; endendmodule//DFlipFlopmodule DFlipFlop(D,clock,Q);input D; // Data input input clock; // clock input output reg Q; // output Q always @(posedge clock) begin Q <= D; end endmodule ///DATA pathmodule DATAPATH( input [4:0]Read_reg_add1, input [4:0]Read_reg_add2, input [4:0]Reg_write_add, input [3:0]Alu_control, input [11:0]Address, input Wr_reg_enable,Wr_mem_enable,Rd_mem_enable, input clock, input reset, output OUTPUT ); // Declaring internal wires that carry data wire zero_flag; wire [31:0]Dataread_from_mem; wire [31:0]read_data1; wire [31:0]read_data2; wire [31:0]Mux_out; wire [31:0]Alu_result; //wire [31:0]datawrite_to_reg; // Instantiating the register file REG_FILE reg_file_module(.reg_read_add1(Read_reg_add1),.reg_read_add2(Read_reg_add2),.reg_write_add(Reg_write_add),.datawrite_to_reg(Alu_result),.read_data1(read_data1),.read_data2(read_data2),.wr_reg_enable(Wr_reg_enable),.clock(clock),.reset(reset)); // Instanting ALU ALU alu_module(.A(read_data1), .B(Mux_out), .alu_control(Alu_control), .alu_result(Alu_result), .zero_flag(zero_flag)); //Mux Mux_2X1 mux(.mem_rd_select(Rd_mem_enable),.dataread_from_mem(Dataread_from_mem),.regdata2(read_data2),.mux_out(Mux_out)); //Data Memory Data_Mem DM(.clock(clock),.rd_mem_enable(Rd_mem_enable),.wr_mem_enable(Wr_mem_enable),.address(Address),.datawrite_to_mem(Alu_result),.dataread_from_mem(Dataread_from_mem)); // Dflipflop DFlipFlop DF (.D(zero_flag), .Q(OUTPUT),.clock(clock));endmodule/*A register file can read two registers and write in to one register. The RISC V register file contains total of 32 registers each of size 32-bit. Hence 5-bits are used to specify the register numbers that are to be read or written. *//*Register Read: Register file always outputs the contents of the register corresponding to read register numbers specified. Reading a register is not dependent on any other signals.Register Write: Register writes are controlled by a control signal RegWrite. Additionally the register file has a clock signal. The write should happen if RegWrite signal is made 1 and if there is positive edge of clock. */module REG_FILE( input [4:0] reg_read_add1, input [4:0] reg_read_add2, input [4:0] reg_write_add, input [31:0] datawrite_to_reg, output [31:0] read_data1, output [31:0] read_data2, input wr_reg_enable, input clock, input reset); reg [31:0] reg_memory [31:0]; // 32 memory locations each 32 bits wide initial begin reg_memory[0] = 32'h00000000; reg_memory[1] = 32'hFFFFFFFF; reg_memory[2] = 32'h00000002; reg_memory[3] = 32'hFFFFFFFF; reg_memory[4] = 32'h00000004; reg_memory[5] = 32'h01010101; reg_memory[6] = 32'h00000006; reg_memory[7] = 32'h00000000; reg_memory[8] = 32'h10101010; reg_memory[9] = 32'h00000009; reg_memory[10] = 32'h0000000A; reg_memory[11] = 32'h0000000B; reg_memory[12] = 32'h0000000C; reg_memory[13] = 32'h0000000D; reg_memory[14] = 32'h0000000E; reg_memory[15] = 32'h0000000F; reg_memory[16] = 32'h00000010; reg_memory[17] = 32'h00000011; reg_memory[18] = 32'h00000012; reg_memory[19] = 32'h00000013; reg_memory[20] = 32'h00000014; reg_memory[21] = 32'h00000015; //reg_memory[22] = 32'h00000016; //reg_memory[23] = 32'h00000017; //reg_memory[24] = 32'h00000018; //reg_memory[25] = 32'h00000019; //reg_memory[26] = 32'h0000001A; //reg_memory[27] = 32'h0000001B; //reg_memory[28] = 32'h0000001C; //reg_memory[29] = 32'h0000001D; //reg_memory[30] = 32'h0000001E; reg_memory[31] = 32'hFFFFFFFF; end // The register file will always output the vaules corresponding to read register numbers // It is independent of any other signal assign read_data1 = reg_memory[reg_read_add1]; assign read_data2 = reg_memory[reg_read_add2]; // If clock edge is positive and regwrite is 1, we write data to specified register always @(posedge clock) begin if (wr_reg_enable) begin reg_memory[reg_write_add] = datawrite_to_reg; end else reg_memory[reg_write_add] = 32'h00000000; endendmodule/////PROCESSORmodule PROCESSOR( input clock, input reset, output Output); wire [31:0] instruction_Code; wire [3:0] ALu_control; wire WR_reg_enable; wire WR_mem_enable; wire RD_mem_enable; IFU IFU_module(.clock(clock), .reset(reset), .Instruction_Code(instruction_Code)); CONTROL control_module(.opcode(instruction_Code[4:0]),.alu_control(ALu_control),.regwrite_control(WR_reg_enable),.memread_control(RD_mem_enable),.memwrite_control(WR_mem_enable)); DATAPATH datapath_module(.Wr_mem_enable(WR_mem_enable),.Rd_mem_enable(RD_mem_enable),.Read_reg_add1(instruction_Code[9:5]),.Read_reg_add2(instruction_Code[14:10]),.Reg_write_add(instruction_Code[19:15]),.Address(instruction_Code[31:20]),.Alu_control(ALu_control),.Wr_reg_enable(WR_reg_enable), .clock(clock), .reset(reset), .OUTPUT(Output));endmodule**********************************************************************************************************************************************************Below is my Synthesis.tcl file for genus synthesis ******************** set_attribute lib_search_path "/home/sameer23185/Desktop/VDF_PROJECT/lib"set_attribute hdl_search_path "/home/sameer23185/Desktop/VDF_PROJECT"set_attribute library "/home/sameer23185/Desktop/VDF_PROJECT/lib/90/fast.lib"read_hdl Master.velaborateread_sdc Min_area.sdcset_attribute hdl_preserve_unused_register trueset_attribute delete_unloaded_seqs falseset_attribute optimize_constant_0_flops falseset_attribute optimize_constant_1_flops falseset_attribute optimize_constant_latches falseset_attribute optimize_constant_feedback_seqs false#set_attribute prune_unsued_logic falsesynthesize -to_mapped -effort mediumwrite_hdl > report/HDL_min_Netlist.vwrite_sdc > report/constraints.sdc write_script > report/synthesis.greport_timing > report/synthesis_timing_report.repreport_power > report/synthesis_power_report.repreport_gates > report/synthesis_cell_report.repreport_area > report/synthesis_area_report.repgui_show **********************************************WHEN I COMPARING MY GOLDEN.V WITH HDL_min_Netlist.v during conformal , I got these non-equivalent point for every reg memory and for every data memory. I don't know what to do with these non-equivalent point. I've been stuck here for the past four days. Please help me in this and how can I remove this non- equivalent point , since I am new to this I really don't know what to do. Full Article
ng removing cdn_loop_breakers from netlist By community.cadence.com Published On :: Wed, 12 Jun 2024 04:49:49 GMT I was trying to remove the cdn_loop_breaker cells from the netlist. When I tried the below 2 things, it removing the cdn_loop_breaker cells but while connecting the cdn_loop_breaker cell input to its proper connection, its somehow misleading the connectionsThings i tried:1. remove_cdn_loop_breaker -instances *cdn_loop_breaker*then i just ran remove_cdn_loop_breaker comand without the -instances switch2. remove_cdn_loop_breaker both of the above things are not providing the proper connections after removing the loop_breaker_cells Full Article
ng which tools support Linting for early stages of Digital Design flow? By community.cadence.com Published On :: Thu, 03 Oct 2024 19:08:53 GMT I am trying to understand the Linting process. I know that mainly JasperGold is the tool for this purpose. Though I think JasperGold is more suited for later stages of the design. As a RTL Design Engineer, I want to make sure that if another tool has the capability of doing Linting earlier in the flow. for example, does Xcelium, Genus or Confomal support linting. I have seen some contradicting information online regarding this topic, though I can't find anything related to Linting on any of these tools. Thanks Full Article
ng Asking for a software suggestion. By community.cadence.com Published On :: Tue, 15 Oct 2024 23:05:41 GMT Hi. I'm a very new learner on Cadence. I want to synthesis my logic design for the maximum, minimum and an average results of delay, power dissipation and area under varying multiple inputs of different data. The different data will be exported from other software results. I'm lost on the steps/processes I should do. Could anyone suggest me on which software and/or function or scripts I should use to achieve these results? Full Article
ng 5X “Time Warp” in Your Next Verification Cycle Using Xcelium Machine Learning By community.cadence.com Published On :: Wed, 22 Jun 2022 05:19:00 GMT Artificial intelligence (AI) is everywhere. Machine learning (ML) and its associated inference abilities promise to revolutionize everything from driving your car to making your breakfast. Verification is never truly complete; it is over when you run...(read more) Full Article xcelium ml machine learning xcelium simulation
ng Achieve 80% Less Late-Stage RTL Changes and Early RTL Bug Detection By community.cadence.com Published On :: Tue, 16 Aug 2022 05:00:00 GMT It has become challenging to ensure that the designs are complete, correct, and adhere to necessary coding rules before handing them off for RTL verification and implementation. RTL Designer Signoff Solution from Cadence helps the user identify RTL bugs at a very early development stage, saving a lot of effort and cost for the design and verification team. Our reputed customers have confirmed that using RTL signoff for their design IP helped save up to 4 weeks and reduce the late-stage RTL changes by up to 80%.(read more) Full Article Jasper RTL Designer Signoff App Jasper Early Bug Detection
ng TSN-PTP: A Real-Time Network Clock Synchronizing Protocol By community.cadence.com Published On :: Mon, 12 Sep 2022 06:45:00 GMT In a network containing multiple nodes, the need for synchronization between the various nodes is not just instrumental but also a complicated and highly complex process. This process becomes even more tricky if we synchronize the clocks between the Manager and the Peripheral. As we know, in a real-time network, some of the nodes would behave like Managers while some would be a Peripheral. If we must make the communication process smooth, then the local clocks of these nodes must be synchronized. The problem with this synchronization is that we have the clock running in the Manager as well. If we send the value of the Manager clock to the Peripheral, the synchronization doesn’t happen as we have a propagation delay of the messages, along with the propagation delay of the electronic circuits of Manager and the Peripheral. The cherry on the cake is that these electronic circuit propagation delays are not random and remain constant, so we can add a time offset to it to match the clock. To tackle this challenge, IEEE has come up with a protocol named “Precision Timing Protocol.” Operation of PTP: To synchronize the clocks, a Sync message is sent by the Manager to the Peripheral, which then timestamps the receiving time of the same. Following this, a ‘Follow up’ message is issued by the Manager stating the timestamp at which the Sync message was sent. The Peripheral then finds the difference between the two values and adds this to its current time. After this, the time difference between the Manager and the Peripheral narrows down to only the propagation delay of the messages. To overcome this, the Peripheral issues a ‘Delay Request’ to the Manager, and the Manager, in turn, issues a ‘Delay Response.’ Both these messages have the timestamp of when they were issued. The time at which they are received is then noted. Since two messages are sent, one from the Peripheral and the other from the Manager, there are two propagation delays. Then half of this value is our propagation delay. The Peripheral then adds this propagation delay to its clock, and hence the clock gets synchronized. Advantages of PTP: It provides accurate time stamping. It is a well-known clock synchronization protocol. It provides intensified security inside the premises. It provides the possibility of setting coordinated actions and synchronized communication. There are various versions of PTP that have been developed over time, namely PTPv1, PTPv2, PTPv2_1, and the latest PTP-AS. Cadence Verification IP for Ethernet is available to support the newer version of PTP, allowing simulation of the device for efficient IP, SoC, and system-level design verification. Semiconductor companies can start using it to fully verify their controller design and achieve functional verification closure on it within no time. Full Article Verification IP uvm 5G Network Ethernet VIP Functional Verification Cadence VIP portfolio VIP Automotive Ethernet Ethernet TSN PTP precision timing protocol verification
ng Moving Beyond EDA: The Intelligent System Design Strategy By community.cadence.com Published On :: Thu, 22 Sep 2022 09:20:00 GMT The rising customer expectations, intermingling fields and high performance needs can be satisfied with the system based design. An intelligent Systems Design strategy can offer a quicker route to an optimum design and helps to increase designers' productivity and analyzes efficiency by providing the ability to explore the entire design space. Cadence Intelligent System Strategy enables a system design revolution and reduces project schedules with optimized continuous integration.(read more) Full Article optimality artificial intelligence intelligent system design
ng BoardSurfers: Optimizing RF Routing and Impedance Using Allegro X PCB Editor By community.cadence.com Published On :: Thu, 18 Jul 2024 21:15:00 GMT Achieving optimal power transfer in RF PCBs hinges on meticulously routed traces that meet specific impedance requirements. Impedance matching is essential to ensure that traces have the same impedance to prevent signal reflection and inefficient pow...(read more) Full Article RF PCB Routing Allegro X PCB Editor BoardSurfers RF design PCB design shapes allegro x
ng BoardSurfers: Some Wisdom from Designing for a High-Volume Production OEM By community.cadence.com Published On :: Wed, 21 Aug 2024 05:19:00 GMT At what stage in the design cycle do you start to think about the PCB material costs? What about the costs to assemble the PCB? Once a design becomes successful, should you then redesign it to achieve a scalable product? Placing components and routi...(read more) Full Article Allegro X PCB Editor BoardSurfers Allegro X Advanced Package Designer SPB PCB Editor PCB design allegro x Allegro
ng DesignCon Best Paper 2024: Addressing Challenges in PDN Design By community.cadence.com Published On :: Tue, 17 Sep 2024 19:40:00 GMT Explore Impacts of Finite Interconnect Impedance on PDN Characterization Over the past few decades, many details have been worked out in the power distribution network (PDN) in the frequency and time domains. We have simulation tools that can analyze the physical structure from DC to very high frequencies, including spatial variations of the behavior. We also have frequency- and time-domain test methods to measure the steady-state and transient behavior of the built-up systems. All of these pieces in our current toolbox have their own assumptions, limitations, and artifacts, and they constantly raise the challenging question that designers need to answer: How to select the design process, simulation, measurement tools, and processes so that we get reasonable answers within a reasonable time frame with a reasonable budget. Read this award-winning DesignCon 2024 paper titled “Impact of Finite Interconnect Impedance Including Spatial and Domain Comparison of PDN Characterization.” Led by Samtec’s Istvan Novak and written with a team of nine authors from Cadence, Amazon, and Samtec, the paper discusses a series of continually evolving challenges with PDN requirements for cutting-edge designs. Read the full paper now: “Impact of Finite Interconnect Impedance Including Spatial and Domain Comparison of PDN Characterization.” Full Article featured DesignCon PDN signal integrity analysis Signal Integrity PDN Analysis Sigrity
ng Using Voltus IC Power Integrity to Overcome 3D-IC Design Challenges By community.cadence.com Published On :: Tue, 08 Oct 2024 06:12:00 GMT Power network design and analysis of 3D-ICs is a major challenge due to the complex nature and large size of the power network. In addition, designers must deal with the complexity of routing power through the interposer, multiple dies, through-silicon vias (TSVs), and through-dielectric vias (TDVs). Cadence’s Integrity 3D-IC Platform and Voltus IC Power Integrity Solution provide a fully integrated solution for early planning and analysis of 3D-IC power networks, 3D-IC chip-centric power integrity signoff, and hierarchical methods that significantly improve capacity and performance of power integrity (PI) signoff while maintaining a very high level of accuracy at signoff. This blog summarizes the typical design challenges faced by today’s 3D-IC designers, as discussed in our recent webinar, “Addressing 3D-IC Power Integrity Design Challenges.” Please click here to view the full webinar. Major Trends in Advanced Chip Design From chips to chiplets, stacked die, 3D-ICs, and more, three major trends are impacting advanced semiconductor packaging design. The first is heterogenous integration, which we define as a disaggregated approach to designing systems on chip (SoCs) from multiple chiplets. This approach is similar to system-in-package (SiP) design, except that instead of integrating multiple bare die – including 3D stacking – on a single substrate, multiple IPs are integrated in the form of chiplets on a single substrate. The second major trend is around new silicon manufacturing techniques that leverage silicon vias (TSVs) and high-density fanout RDL. These advancements mean that silicon is becoming a more attractive material for packaging, especially when high bandwidth and form factor become key attributes in the end design. This brings new design and verification challenges to most packaging engineers who typically work with organic and ceramic substrate materials. Finally, on the ecosystem side, all the large semiconductor foundries now offer their own versions of advanced packaging. This brings new ways of supporting design teams with technologies like reference flows and PDKs, concepts that have typically been lacking in the packaging community. Cadence has worked with many of the leading foundries and outsourced semiconductor assembly and test facilities (OSATs) to develop multi-chip(let) packaging reference flows and package assembly design kits. The downside is that, with the time restrictions designers are under today, there isn’t enough time to simulate the details of these flows and PDKs further. For those who must make the best electro/thermal/physical decisions to achieve the best power/performance/area/cost (PPAC), factors can include accurate die size estimations, thermal feasibility, die-to-die interconnect planning, interposer planning (silicon/organic), front-to-front and front-to-back (F2F/F2B) planning, layer stack and electromigration/ IR drop (EMIR)/TSV planning, IO bandwidth feasibility, and system-level architecture selection. 3D-IC Power Network Design and Analysis The key to success in 3D-IC design is early power integrity planning and analysis. Cadence’s Integrity 3D-IC platform is a high-capacity 3D-IC platform that enables 3D design planning, implementation, and system analysis in a single, unified cockpit. Cadence’s Voltus IC Power Integrity Solution is a comprehensive full chip electromigration, IR drop, and power analysis solution. With its fully distributed architecture and hierarchical analysis capabilities, Voltus provides very fast analysis and has the capacity to handle the largest designs in the industry. Typically, 3D-IC PDN design and analysis is performed in four phases, as shown in Figure 1. Phase 1 - Perform early power delivery network (PDN) exploration with each fabric’s PDN cascaded in system PI with early circuit models. Phase 2 – Plan 3D-IC PDNs in Cadence’s Integrity 3D-IC platform, including micro bumps, TSVs, and through dielectric vias (TDVs), power grid synthesis for dies, and early rail analysis and optimization. Phase 3 – Perform full chip-centric signoff in Voltus with detailed die, interposer, and package models, including chip die models, while keeping some dies flat. Phase 4 – Perform full system-level signoff with Cadence’s Sigrity SystemPI using detailed extracted package models from Sigrity XtractIM, board models from Sigrity PowerSI or Clarity 3D Solver, interposer models from XtractIM or Voltus, and chip power models from Voltus. Figure 1. 3D-IC PDN design and analysis phases 3D-IC Chip-Centric Signoff The integration of Integrity 3D-IC and Voltus enables chip-centric early analysis and signoff. Figure 2 and Figure 3 highlight the chip centric early PI optimization and signoff flows. In early analysis, the on-chip power networks are synthesized, and the micro bumps and TSVs can be placed and optimized. In the signoff stage, all the detailed design data is used for power analysis, and detailed models are extracted and used for package, interposer, and on-die power networks. Figure 2. Early chip-centric PI analysis and optimization flow Figure 3. Chip-centric 3D-IC PI signoff Hierarchical 3D-IC PI Analysis To improve the capacity and performance of 3D-IC PI analysis, Voltus enables hierarchical analysis using chiplet models. Chiplet models can be reduced chip models in spice format or more accurate xPGV models which are highly accurate proprietary models generated by Voltus. With xPGV models, the hierarchical PI analysis has almost the same accuracy as flat analysis but offers 10X or higher benefit in runtime and memory requirements. Conclusion This blog has highlighted the major design trends enabled by advanced 3D packaging and the design challenges arising from these advancements. The design of power delivery networks is one of these major challenges. We have discussed Cadence solutions to overcome this PI challenge. To learn more, view our recent webinar, "Addressing 3D-IC Power Integrity Design Challenges" and visit the Voltus web page. Full Article PDN 3D-IC Integrity Power Integrity in-design analysis Sigrity Clarity 3D Solver
ng BoardSurfers: Optimizing Designs with PCB Editor-Topology Workbench Flow By community.cadence.com Published On :: Wed, 09 Oct 2024 09:12:00 GMT When it comes to system integration, PCB designers need to collaborate with the signal analysis or integrity team to run pre-route or post-route analysis and modify constraints, floorplan, or topology based on the results. Allegro PCB Edito...(read more) Full Article Allegro X PCB Editor BoardSurfers Topology Workbench Allegro X Advanced Package Designer SPB PCB Editor PCB design Allegro PCB Editor system integration allegro x Allegro