- CDSP4 HowTo
- Shiv Sikand <sikand@users.sourceforge.net>
- What is cdsp4 ?
- Cdsp4 is a high performance, (mostly) OpenSource integration of
- Cadence DFII and Perforce. (www.perforce.com).
- Mostly ?
- The integration consists of two parts...a pair of GDM ( Generic Design
- Management) executables, p4fisrv and p4gdmconfig (Solaris only at the
- present time) and a bunch of Skill. The GDM stuff is proprietary since
- it links with Cadence's GDM api. However, the nature of the cdsp4
- integration means that all the work is performed in Skill, so no edits
- are needed to p4fisrv, which is a specially crafted server.
- Copyright and Legal Notice (p4fisrv and p4gdmconfig)
- You may not use p4firsrv for any other purpose other than to
- facilitate the cdsp4 integration. You are bound by the same terms and
- conditions of the Cadence end user license agreement.
- Copyright and Legal Notice (Skill code)
- This code is provided under the BSD source license. The copyright
- holder is Perforce Software.
- OK, now that's out of the way, let's move on.
- Who wrote it ?
- Cdsp4 was written at SGI between 1998and 2000 by Shiv Sikand and Dan
- Freitas. It has been succesfully deployed for a number of different
- chips. SGI open sourced it in line with their commitment to the open
- source community.
- How is it supported ?
- The integration is community supported at the present time. Should it
- become widespread, Perforce Software will support it. Perforce itself,
- is of course, fully supported. Perforce is a member of the Cadence
- Connections program and will work to deliver working integrations for
- all major Cadence releases. Cadence supports this work through the
- membrship of Perforce in the Connections program.
- What are it's limitations at the present time ?
- Since Version 1 is a Skill integration and not a 'pure' GDM integration, it will not work with tools that do not use Skill. A classic example is StreamIn or VerilogIn. (nino/pipo binaries). However, simple scripts run in -nograph mode can cover this kind of functionality very easily.
- Version 2, due in 2001, will support both Skill and non-Skill tools. However, the non-Skill support cannot be open sourced due to the GDM license agreement, so it likely to provide only very basic functionality to avoid secondary scripting.
- What are it's advantages ?
- It's very fast, has the richest feature set of any available DFII
- integration, it's fairly bug free, you get the source and it's free.
- What's the catch [1]?
- You have to buy Perforce, but it is pretty cheap in
- comparison. ($600/users with volume discounts. See the Perforce Web
- Page for more details).
- What's the catch [2]?
- The secret to a good data management system is it's ability to do
- Configuration Management, or CM. This is the ability to take your data
- set backwards or forwards to any point in time with the greatest of
- ease. In order to make this happen, you need to adopt the cdsp4 method
- of branch and replace. For more details, read my paper, 'Advanced
- OpenSource DM for Cadence 4.4, which is included as a pdf file in this
- directory.
- What's different in the UI ?
- The biggest change is the library browser. You cannot use the default
- browser and must use the listBoxBrowser library manager that is part
- of the integration. It's your one stop shop for all DM
- functions. Also, handle all your library and cell creation requests
- through lbb. Don't use the file commands on the CIW for creating
- managed libraries. It's ok to use them for un-managed libraries.
- What do I need to know before I begin ?
- Basics
- Before you begin, you need to educate yourself on how 'p4' works. You
- can download a limited user version for free from the Perforce Web
- Site.
- Atomic transactions
- This is one of the key features and is used at two levels of
- granularity. The first level handles the Cadence co-managed sets. A
- co-managed set is a simply a set of files that make up a cellview or
- other design object. All the other tools that I have seen use two or
- more additional files per cellview to handle this feature, resulting
- in very poor performance and potentially, reliability.
- In cdsp4, the co-managed set is an atomic transaction. For this
- reason, you should not checkin and checkout files using the p4 command
- line interface unless you understand exactly what you are doing. The
- second level of granularity is used for reverse integration, which we
- shall talk about in due course.
- Branching and Integration
- Once you are familiar with it's basic operation (add, edit, submit),
- you need to familiarise yourself with the p4 InterFile Branching
- mechanism. (p4 branch and p4 integrate). I suggest you check in some
- files and play with these two commands and read the available
- documentation. Once you figure this out, the rest is easy !!
- The cdsp4 data flow model
- From this point on, I'm assuming that you have a reasonable feel for
- IFB. If, for any reason you think I am wrong, or the approach is
- faulty, let me know. Without doubt, there are improvements that need
- to be made to the data flow model, namely with multi level branches to
- support multi-user sharing and communication (coming soon), but I
- believe that the fundamentals are sound and have been extensively
- reviewed by Software Configuration Management gurus. Your
- contributions are welcome.
- The basic premise of the model is that everyone works in a
- branch. There is no direct editing of the mainline.
- (BTW, most of the statements that I make with respect to the data flow
- model are not mandatory, the code does not enforce many of these
- conditions and in the instances where it does, the default behaviour
- can be overriden using a global variable.)
- The branches are under control of the user. Branches can be updated
- from the mainline using the 'Integration Wizard' which automatically
- tracks the dependencies of files and their parentage in your
- branch. Changes in the branch are 'reverse integrated' back into the
- mainline as an atomic transaction (on a per library basis) ensuring
- consistency and reliability. An integration policy prohibits reverse
- integration of data back into the mainline unless you are in-sync with
- the mainline for files you have not edited.
- The interface gives you the ability to move freely in revision space,
- including deleted files, as many times as you like, without any
- performance hit. Perforce has implict state control through its change
- based architecture so you never need to 'tag'. Not that anything
- prevents you from using tags or 'labels', as they are known in
- Perforce speak.
- This free movement applies to individual cells, entire libraries or
- sets of libraries.
- Installation specifics
- Each library gets its own Perforce 'client'. In order to generate a
- unique name, a scheme is used:
- <libname>:<CDS_Project>_<CDS_Rev>
- When a library is branched( using the buildbranch perl script), the syntax is
- <libname>:<branchname> where the branchname takes the form
- <CDS_Project>_<CDS_Rev>_<branchtype>_<3 character Month><Day>_<4 digitYear>
- branchtype is a specifier such as 'block', 'top level', 'rtl' etc.
- Clients are for a library a located by reading a file known as
- 'cds.p4clients'. This file always has a corresponding cds.lib file. It
- containts the library name, the library path and the corresponding
- client that maps to that path.
- The system tries to define a 'master' cds.lib file. Ie the cds.lib
- file for the mainline and by extension, a master cds.p4clients file.
- When a branch is built, a new cds.lib and cds.p4clients is generated
- by the buildbranch script. (in the site-specific perl directory which
- you will need to tweak/fix/rewrite for your own use. I definitely need
- help here to build a more generic solution).
- The user 'sees' a branch by running branchprep.pl. This assumes the
- following:
- In the dir where the command is run, there exists a cds.lib file which
- references the master cds.lib file.
- Eg
- ~sikand/opus44/cds.lib contains (at minimum) and include entry for the
- mainline.
- INCLUDE /projects/n1/rev1.0/cadence_libs/cds.lib
- Assuming we have built a branch for some subsection of n1/rev1.0, (or
- even all of it):
- eg n1_rev1.0_top_Jan1_2000
- then it will create a new cds.lib file
- n1_rev1.0_top_Jan1_2000/cds.lib
- It also creates a file
- n1_rev1.0_top_Jan1_2000/.branchrc which defines a shell environment
- variable, PROJECT_BRANCH.
- It is up to you to make sure that your startup script for DFII detects
- the existence of this file and source it, or you can do it manually
- since that is how the intrface detects you are running in a branch.
- It will also copy and display.drf files and any other files that begin
- with '.cds'.
- The interface needs to know how to find the appropriate cds.p4clients
- file. The location is hard coded (for now, until I fix it) in the
- CDS_P4Triggers.il file.
- So, once you have fixed the definitions for CDS_P4MasterClientFile
- (for both the mainline and branches) and have defined CDS_Project and
- CDS_Rev and have followd the other insallation instructions in the
- README file, you are ready to rock.
- Revisioning a library
- Often, this is the first step unless you have used my synchronicity to
- p4 converter.
- The default client mapping is again hardcoded and on the todo
- list. However, there is a Custom View field that allows you to
- override it. If you are revisioning a lot of libraries it would make
- sense to generate your own sets of defaults.
- <Lots more to come, of course, in due course, or with your help>
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 5093 | Hari Krishna Dara |
Populating perforce branch. I will be adding p4admin files to it. |
20 years ago | |
//guest/perforce_software/cdsp4/release/2.2/Skill/Doc/cdsp4-howto | |||||
#1 | 1675 | Shiv Sikand | New 2.2 tree | 23 years ago |