kevin@cheetah.inmos.co.uk (Kevin Cameron) (05/13/91)
When thinking about modelling bi-directional devices like pass transistors and transmission gates for CMOS VLSI circuits, it struck me that VHDL does not have a mechanism for identifying the driver responsible for an event. If the models for such devices could identify that they had previously scheduled the events which activated them then it would be possible to write simpler models for them. What I had in mind was a signal attribute (e.g. 'DRIVER) which would be "true" in the in the process(es) responsible for signal being active in a particular cycle, and "false" in processes which did not schedule any transactions for that cycle. I hope this is a suitable place to discuss such issues - if not where? ------------------------------------------------------------------------------- Kevin Cameron INMOS, 1000 Aztec West, Almondsbury, Bristol BS12 4SQ, UK
kgg@cs.ed.ac.uk (Kees Goossens) (05/14/91)
In article <16017@ganymede.inmos.co.uk> kevin@cheetah.inmos.co.uk (Kevin Cameron) writes: >When thinking about modelling bi-directional devices like pass transistors >and transmission gates for CMOS VLSI circuits, it struck me that VHDL does >not have a mechanism for identifying the driver responsible for an event. >If the models for such devices could identify that they had previously >scheduled the events which activated them then it would be possible to >write simpler models for them. > >What I had in mind was a signal attribute (e.g. 'DRIVER) which would be "true" >in the process(es) responsible for signal being active in a particular >cycle, and "false" in processes which did not schedule any transactions for >that cycle. Naive question: What would the use be of such a construct? It could be useful for debugging, but what would be the intuition behind the construct in terms of hardware? How would you simplify the model for transistor level? As I understand the previous paragraphs, it would mean writing a VHDL program, and then, using the 'DRIVER attribute determine which drivers have been used in the computation of the behaviour of the circuit. Those drivers not fires can be deleted. Is that correct? If this understanding is correct, mustn't you do an exhaustive simulation to determine redundant drivers? I have the impression that VHDL's bi-directional features are used mainly as very high level buses or as very low level bidirectional wires (as above). Am I wrong or is there anything in between? Disclaimer: I am not a hardware designer, but am interested in VHDL from a (hardware Description) Language point of view. I would be grateful if someone could post a transistor level description of a NAND gate (say) using more than one signal strength, overpowering and stored charge on the wires, for example? Is VHDL used to model circuits as such a low level, or are specialised simulators like MOSSIM (not detailed enough?) or SPICE (too detailed?) used? >I hope this is a suitable place to discuss such issues - if not where? If this isn't the right place, please let me know too... >Kevin Cameron INMOS, 1000 Aztec West, Almondsbury, Bristol BS12 4SQ, UK Kees -- Kees Goossens Keep in Touch with the Dutch: LFCS, Dept. of Computer Science JANET: kgg@uk.ac.ed.lfcs University of Edinburgh, Scotland UUCP: ..!mcsun!ukc!lfcs!kgg Wiskunde is bouwen in de geest. --- Luitzen Egbertus Jan Brouwer.
kevin@cheetah.inmos.co.uk (Kevin Cameron) (05/16/91)
The 'DRIVER suggestion was aimed at modelling CMOS/nMOS pass transistor circuits when using simple logic types (e.g. MVL4/7). Models for these devices would typically pass values from one signal (A) to another (B) with a fixed delay. If there are other processes driving the signal B then the pass transistor model needs to be able to identify whether the events on B are ones it scheduled - since these should not be passed back to A. I don't think this can be done without a more complex logic type at the moment. Further Suggestion: Attributes could also be introduced to indicate how many drivers there are for a signal and how many are active in any cycle e.g.: B'DRIVERS -- The total number of drivers driving B. B'ACTIVE_DRIVERS -- The total number of drivers active in this simulation cycle. This sort of information is usually stored by VHDL simulators - it just needs a method for accessing it. The aim of these suggestions is to enable complex models to be developed for low level devices (for pass transitor circuits etc.), but using simple logic types compatible with the simple models which form the bulk of any large (silicon) design. ------------------------------------------------------------------------------- Kevin Cameron INMOS, 1000 Aztec West, Almondsbury, Bristol BS12 4SQ, UK Tel: (UK) 0454 616 616 x364, Fax: 617 910