next up previous contents
Next: Beenden von Cadence Up: Anlegen einer Schaltung Previous: Standardbibliotheken und der Library

Öffnen eines Views zum Editieren

Der bereits angelegte Functional View wird jetzt zum Editieren geöffnet:
Menu>     File -> Open
Menu>     Library Name -> <Bibliothek>
Form>     Cell Name    -> <Zelle>
Menu>     View Name    -> functional
Button>   Mode         -> Edit
Button>   OK
Der FIFO soll folgendes Verhaltensmodell haben:
// Verilog HDL for "mylib", "fifo256" "functional"

module fifo256( data, ce, we, oflow, empty, clk, reset, bistmode, bistout );

inout [7:0]     data;             // Bidirektionaler Datenbus
input           ce, we;           // Chip Enable, Write Enable
input           clk, reset;       // Takt, asynchrones Ruecksetzen
output          oflow, empty;     // Ueberlauf, leer

input           bistmode;         // BIST-Mode
output          bistout;          // BIST-Ausgang

reg             oflow;
reg [7:0]       fiforam [0:255];  // Der RAM
reg [7:0]       read_adr;         // Adresse, von der gelesen wird
reg [7:0]       write_adr;        // Adresse, auf die geschrieben wird
wire [7:0]      delta_adr;        // Differenz der Adressen


/**********************************************************************/
/* Modellierung asynchrones Reset                                     */
/**********************************************************************/

always @(reset)
   if( reset == 1 ) begin
      assign read_adr = 0;
      assign write_adr = 0;
      assign oflow = 0;
   end else begin
      deassign read_adr;
      deassign write_adr;
      deassign oflow;
   end


/**********************************************************************/
/* Wenn Chip Enable und Write Enable, schreibe auf Speicher und       */
/* erhoehe Schreibadresse.                                            */
/* Wenn Chip Enable und nicht Write Enable, erhoehe Leseadresse       */
/**********************************************************************/
 
always @(posedge clk) begin
   if(ce == 1) begin
      if(we == 1) begin
         fiforam[write_adr] <= data;
         write_adr <= write_adr + 1;
      end
      else begin
         read_adr <= read_adr + 1;
      end
   end
end

/**********************************************************************/
/* Wenn Chip Enable und nicht Write Enable, lege den Inhalt der       */
/* Leseadresse auf den Datenbus, ansonsten Ausgang hochohmig          */
/**********************************************************************/

assign data  = (ce == 1 && we == 0) ? fiforam[read_adr] : 32'bz;

/**********************************************************************/
/* Differenz der Adressen = Speicherinhalt                            */
/**********************************************************************/

assign delta_adr = write_adr - read_adr;

/**********************************************************************/
/* Wenn 255 Worte im Speicher und schreiben, Ueberlauf-Warnung        */
/* einschalten. Wenn 256 Worte im Speicher und lesen, Uberlauf-       */
/* Warnung ausschalten                                                */
/**********************************************************************/

always @(posedge clk)
   if( ce == 1 ) begin
      if( delta_adr == 8'hFF && we == 1 ) oflow <= 1;
      if( delta_adr == 0 && we == 0 ) oflow <= 0;
   end

/**********************************************************************/
/* Wenn Adressdifferenz 0 und kein Ueberlauf, Leer-Signal             */
/**********************************************************************/

assign empty = (delta_adr == 0 & ~oflow);


endmodule
Wenn Sie den Text abgespeichert und den Editor beendet haben, fragt Cadence Sie, ob automatisch ein Symbol generiert werden soll. Sie können mit `Yes' antworten. Sehen Sie sich das Symbol an:
Menu>     File -> Open
Menu>     Library Name -> <Bibliothek>
Form>     Cell Name    -> <Zelle>
Menu>     View Name    -> symbol
Button>   Mode         -> Read
Button>   OK
Das Anzeigefenster mit dem Symbol beenden Sie mit
Windows -> Close
Analog öffnen Sie z.B. einen Schaltplan (Schematic View).

Thilo Thiessenhusen
16. 4. 1999