Schaltkreis- und Systementwurf

Aus Informationssystemtechnik an der TU Dresden
Zur Navigation springen Zur Suche springen

Login für Praktikumsunterlagen

  • Nutzer: stud_ice2013
  • Passwort: TOE140prak

Ablauf

Man schreibt sich auf der Website des Praktikums zu Beginn des Semesters ein und wird dabei in eine Gruppe eingetragen. In dieser Gruppe hat man dann zu einem Termin eine Einführungsveranstaltung in das verwendete CAD-System (Cadence). Bei diesem Termin hat man dann auch die Möglichkeit, sich ein Passwort für den Login festzulegen und seine Mensa-Karte registrieren zu lassen, so dass man das Computer-Kabinet auch selbstständig betreten kann.

Man sollte zuerst versuchen den beispielhaft implementierten Sortieralgorithmus bubblesort nachvollziehen bzw. selbst zu implementieren. Anschließend soll für die Projektarbeit einen eigens gewählten Algorithmus (für den man sich in der Übung eintragen kann) implementieren.

Konsultationen

Die Konsultationen finden im Wintersemester und im Sommersemester statt.

Tipps und Tricks

Signale mit anderen Viewer ansehen

Zwar ist das eingebaute SimVision eigentlich super was die Handhabung und Darstellung angeht, jedoch stürzt es (jedenfalls bei mir) ziemlich häufig ab. Um eine Datei mit den Signalverläufen zu erzeugen, die auch von anderen Viewern gelesen werden kann, folgenden Block in die Testbench einfügen:

initial
begin
    $dumpfile("signals.vcd");
    $dumpvars;
end

Damit wird eine Datei in ~/ICPRO/ice/<Projekt>/units/<Projekt/Unit>/df2/<Testbench-Cellview>_run1/signals.vcd erzeugt, die man z.B. mit GtkWave oder anderen Viewern offline ansehen kann.

Hinweis: Der in der Testbench angelegte RAM wird dabei nicht in die Datei abgebildet. Um einzelne (oder auch alle) interessanten RAM-Zellen in .vcd-Datei zu haben, kann man nach der RAM-Deklaration wie folgt einzelne Zellen verfügbar machen:

wire [31:0] ram_1 = ram[1];
wire [31:0] ram_2 = ram[2];
wire [31:0] ram_3 = ram[3];
wire [31:0] ram_4 = ram[4];
...

GtkWave

FSM-State Namen

Hat man eine wie oben beschrieben erstellte Datei in GtkWave geöffnet, kann man von Links die Signale in die mittlere Spalte ziehen, um sie anzuzeigen. Dann Rechtsklick auf das Signal -> Data Format -> Translate Filter File -> Enable and Select. Dort wählt man eine Datei, in der man die Zustandskodierungen (Hex) der FSM angibt:

0 IDLE
1 LOAD1
2 LOAD2
...
a FINISH

Im Signal werden dann statt der Hex-Darstellungen die entsprechenden Namen angezeigt. (Entspricht in etwa dem Button "FSM Map" aus SimVision.)

Weitere Formatumwandlungen

Über Data Format -> Translate Process File -> Enable and Select kann man ein ausführbares Skript angeben, dass Zeilenweise von der Standardeingabe lesen muss (erhält damit die Signaldaten als Hex) und pro Eingabezeile eine Ausgabezeile mit beliebigem Text ausgeben muss. Das kann man z.B. nutzen, um Festkommazahlen in eine lesbare Form umzuwandeln. Beispiel:

#!/usr/bin/python

import sys

while True:
	line = sys.stdin.readline().strip()
	if not line:
		break

	try:
		v = int(line, 16)
	except:
		print("?red?invalid")
		sys.stdout.flush()
		continue

	if v > 2**31:
		v -= 2**31
		v *= -1
	v /= 2**31
	print(round(v, 6))

sys.stdout.flush()

Hier wird mit Festkommazahlen gearbeitet, bei denen alle Bits Nachkommastellen sind. Flush nach jedem Output nicht vergessen, sonst hängt sich GtkWave auf.

Sonstiges

Alle Aussagen der Praktikums-Betreuer ohne Garantie, im Zweifel selber nach fragen!

Muss der komplette Verilog Code in den Beleg?

Wenn der Code zu umfangreich wird (>1 DIN A4 Seite?) reichen auch exemplarische Ausschnitte. 5 DIN A4 Seiten Steuerlogik-Code kann/wird kein Korrekteur lesen und überprüfen.

Allgemein sollte man sich eher kurz halten (keine 80-Seiten-Belege).

Wie funktioniert die Simulation mit schematic views?

Variante 1: über conifg file (siehe Anleitung Beleg, funktionierte bei mir allerdings nicht remote).

Variante 2: Man ändert die Reihenfolge bei der Netlist-Erstellung: NC-Verilog-Simulator->(Initialize Design)->Setup->Netlist-> jetzt schematic vor functional schreiben->Netlist erzeugen usw.

Variante 1 hat den Vorteil, dass man pro view einzeln festlegen kann, ob man functional oder schematic zum simulieren benutzten will. Dies ist für dieses Praktikum allerdings nicht relevant.

Wie legt man eigene Konstanten fest?

Aus Datenpfadzellen die Konstanten-Zelle in das eigene Projekt kopieren. Dann im functional-view den Wert und gegebenenfalls den Modulnamen anpassen.

Wie testet man die Gatterschaltung der FSM?

Man verwendet am einfachsten Scan-Flip-Flops. Diese haben in ihrer Bezeichnung ein zusätzliches "s". Dann haben die Flip-Flops einen set-enable und einen set Eingang. Der set-Eingang funktioniert dann bei aktivem set-enable wie bei einem D-Flip-Flop. Damit können auch ungültige Zustände gesetzt und somit getestet werden.

Laut Betreuern reicht es übrigens, wenn man die korrekte Funktionalität der Gatter-FSM-Schaltung im Top-Level zeigt.

Welche Flip-Flops sollten für die FSM-Gatterschaltung verwendet werden?

Ein Reset-Eingang ist von Vorteil. ACHTUNG: der Reset-Eingang ist invertiert!

Ansonsten sollte man die Flip-Flops so wählen, dass die Gatteransteuerung möglichst einfach wird. Ich würde RS-FF oder JK-FF hier D-FF vorziehen.

Wie kann man schematics exportieren?

Öffnen -> Design -> Plot -> Submit -> Plot Options -> Send Plot Only to File -> Dateinnamen eingeben; wenn gewünscht unter Plotter Name auf farbig umschalten -> OK -> OK

Arbeit von zu Hause

Man kann auch von zu Hause arbeiten. Dafür muss man sich per SSH auf die Login-Server des Praktikums verbinden. Je nach heimischer Internetverbindung kann das allerdings mit großen Latenzen und langsamem Bildaufbau verbunden sein. Besser ist es, von der Uni aus, z.B. von einem Computer-Kabinet in der Fakultät Informatik oder vom Laptop aus mit WLAN zu arbeiten. Die Computer im eigentlichen Computer-Kabinet des Praktikums sind nicht gerade empfehlenswert.

Linux

Ein Script, dass die SSH-Verbindung aufbaut und Cadence startet, könnte so aussehen:

#!/bin/sh

ssh eeets << EOF
echo icdf2 -q | icpro ice tutorial
EOF

Dies setzt voraus, dass das Projekt tutorial bereits angelegt wurde und der Hostname eeets in der .ssh/config z.B. wie folgt konfiguriert wurde:

Host eeets
        User <Benutzername>
        HostName eeets1.et.tu-dresden.de
        HostName eeets2.et.tu-dresden.de
        ForwardX11 yes
        ForwardX11Trusted yes
        Cipher arcfour
        Compression yes

Alternativ kann man auch in die Konsole eingeben:

ssh -X <Benutzername>@eeets<1 oder 2>.et.tu-dresden.de

Je nach genutzter Distribution kann es sein, dass noch die X11-Fonts installiert werden müssen. (bspw. bei Ubuntu und Manjaro; bei Crunchbang nicht)

Zu kleine Schrift: In neueren X-Server wird die DPI nicht mehr in der xorg-Konfiguration gesetzt, sondern automatisch vom X-Server "geraten". Dabei werden standardmäßig 75 DPI angenommen, weshalb die Schrift, vor allem im SimVision, so klein gesetzt wird, dass man die Beschriftungen der einzelnen Leitungen nicht mehr lesen kann. Abhilfe: siehe hier.

Alternativ: nur die 75 DPI Fonts installieren, dann sieht die Schrift auch normal aus

Für mehr Komfort gibt es hier noch weitergehende Konfiguration.

Windows

Für Windows benötigt man einerseits einen X11-Server und andererseits ein SSH-Einwahlprogramm. Eine getestete Kombination ist Xming+Putty.

Installation:

Später muss man dann erst Xming starten und dann Putty. Dort dann einfach Doppelklick ICE, und es öffnet sich eine Konsole.