• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Digital Implementation
  3. HELP: synthesis of a Verilog code into a matrix crossbar...

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 91
  • Views 934
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

HELP: synthesis of a Verilog code into a matrix crossbar (running at a frequency >= 1GHz) using Encounter

imran123
imran123 over 16 years ago

 Hello,

I have a verilog code that i'm trying to synthesize using Encounter. the verilog code describes a basic 8 port matrix crossbar and I want to  sythesize this crossbar to run at frequencies greater than 1GHz. im using 90nm IBM9SF technology. I run into negative setup and hold slack values. I'm already using the following lines to have encounter correct these negative slack errors, but so far i have not been successful. Could anyone please tell me what other commands (besides the ones listed below) i can use to correct these negative slack values? thank you very much.

 

# This does the actual placement
placeDesign
addTieHiLo -cell "TIEHITH TIELOTH" -prefix TIE

# Optimize the placement
setOptMode -reclaimArea -highEffort -fixFanoutLoad
#setOptMode -highEffort
optDesign -preCTS

refinePlace


# Clock tree synthesis
#------------------------------------------------------------

setCTSMode \
    -topPreferredLayer 6 \
    -bottomPreferredLayer 4 \
    -noUseLibMaxFanout \
    -addClockRootProp \
    -useCTSRouteGuide

createClockTreeSpec \
    -output par.ctstch \
    -routeClkNet \
    -bufFootprint {CLKBUFX8} \
    -invFootprint {INVX8} \

specifyClockTree -clkfile par.ctstch
ckSynthesis -rguide par_clk.rguide

setOptMode -highEffort -fixFanoutLoad -fixHoldSearchRadius 100
optDesign -postCTS -hold -setup -prefix postCTS

# The clock router sometimes (incorrectly) routes M2 over pins,
# causing violations this allows those routes to be moved later
changeUseClockNetStatus -noFixedNetWires

# Save design for debugging
saveDesign postclksynth -netlist -tcon -rc

# Routing
#------------------------------------------------------------
# Deleting dummy cells
#specifyCellPad DFF* 10
deleteAllCellPad
queryPlaceDensity > postCellPadRemoval_placement_density.rpt
setDelayFootPrint INVX1
setBufFootPrint CLKBUFX1

# Wire up cells to power network
sroute -noStripes -noPadRings -jogControl { preferWithChanges differentLayer }

# Do signal routing
setNanoRouteMode -drouteFixAntenna true
setNanoRouteMode -routeInsertAntennaDiode false
setNanoRouteMode -timingEngine CTE
setNanoRouteMode -routeWithTimingDriven true
setNanoRouteMode -routeWithEco false
setNanoRouteMode -routeWithSiDriven true
setNanoRouteMode -routeTdrEffort 10
setNanoRouteMode -routeSiEffort high
setNanoRouteMode -routeWithSiPostRouteFix false
setNanoRouteMode -drouteAutoStop true
setNanoRouteMode -routeSelectedNetOnly false
setNanoRouteMode -envNumberProcessor 1
setNanoRouteMode -droutePostRouteSwapVia true
globalDetailRoute

setOptMode -highEffort -fixHoldSearchRadius 100 -fixFanoutLoad
optDesign -postRoute -hold -prefix postroute
optDesign -postRoute -drv -setup -prefix postroute

# Add filler/feedthrough cells
addFiller -cell FILL1TH FILL4TH FILL8TH -prefix FILL

checkRoute
checkDrc

  • Cancel
Parents
  • Kari
    Kari over 16 years ago

     You will need to look at your remaining violating paths and figure out why they are still failing timing. Does one of the components in the path have a large slew? Could be a scenic route or placement congestion. Do all the cell delays look reasonable? Maybe the path is too long, or the constraints too tight. There could be many reasons. Once you have a better understanding of what is going on, you can fine tune your script.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Kari
    Kari over 16 years ago

     You will need to look at your remaining violating paths and figure out why they are still failing timing. Does one of the components in the path have a large slew? Could be a scenic route or placement congestion. Do all the cell delays look reasonable? Maybe the path is too long, or the constraints too tight. There could be many reasons. Once you have a better understanding of what is going on, you can fine tune your script.

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

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information