NTB VHDL Bibliothek

Um die Wiederverwendung von VHDL Komponenten zu fördern wurde die NTB VHDL Bibliothek eingerichtet.

SVN Repository

Die Bibliothek befindet sich im SVN unter:

https://svn.ntb.ch/projects/vhdl-library/

Guidelines

Für alle Komponenten in der Bibliothek müssen die unten aufgeführten Guidelines eingehalten werden. Es ist weiter darauf zu achten bei der Programierung die Blöcke so zu schreiben, dass sie in andren Projekten wieder verwendet werden können.

Ordnerstrucktur

  • Der oberste Ordner jedes Blocks besitzt den gleichen Namen wie der Block.
  • Er wird im Ordner der, der Funktionalität des Blocks entspricht abgelegt.
  • Der oberste Ordner enthält die Ordner: trunk und tags, optional noch branches
  • Er enthält eine .info Datei mit dem selben Name wie der Block.
  • Der Unterordner trunk enthält die Ordner: src,sim,doc und ein oder mehrere Projektordner.
  • Im src-Ordner werden die Quelldateien des Blocks abgelegt. (.vhd-Dateien, TCL-Skripts)
  • Im sim-Ordner werden Datein die zur Simulation benötigt werden abgelegt. (Testbenches, .do-Dateien)
  • Im doc-Ordner können Dokumentationsdateien die zusätzlich zur .info Datei benötigt werden abgelegt werden.
  • Die Projektordner müssen folgendermassen bennant werden: Name der Entwicklungsumgebung unterstrich Name des FPGAs z.B. quartus_cyclone_4. Dabei ist darauf zu achten keine von der Entwicklungsumgebung generierten Dateien mit einzuchecken.
  • Alle Ordner bzw. Dateinamen dürfen keine Leerzeichen und auch keine Umlaute (ä,ö,ü) enthalten.

Beispiel fqd

  • FOLDER fqd
    • FOLDER branches
    • FOLDER trunk
      • FOLDER doc
        • FILE overview.png
      • FOLDER sim
        • FILE fqd_rtl.tb.vhd
      • FOLDER src
        • FILE fqd.m.vhd
      • FOLDER quartus_cyclone_4_gx
      • FOLDER quartus_arria_5_gx
      • FILE fqd.info
    • FOLDER tags
      • FOLDER 0.1
      • FOLDER 0.1.1
      • FOLDER 0.1.2
      • FOLDER 0.2
      • FOLDER 0.2.1

Coding Convention

Die einzuhaltenden Richtlinien für Code sind hier zusammengestellt. Dabei sollte mindestens die Stufe 3 verwendet werden.

Die .info Datei

Für jeden Block muss eine .info Datei angelegt werden. Sie enthält Informationen über die jeweilige Komponente. Sie wird auch verwendet um den Wiki Eintag zu generieren. Es ist darauf zu achten, diese Datei stehts aktuell zu halten. Für jede Komponente müssen in der .info Datei folgende Parameter angegeben werden:

  • name (designator)
  • description (string)
  • version (designator)
  • sources (name of the source files)(designator)
  • testbench (name of the testbench files)(designator)
  • usedSubBlocks (Name of the used subblock)(designator)
  • license (string)
  • state (UnderConstruction, Testing, Released)
  • reviewedBy (string)

Optional können noch weitere Informationen abgelegt werden:

  • synthesisResults (string)
  • usage (string)
  • knownBugs (string)
  • modifiedBy (string)

Alle Paramter die mit designator gekenzeichnet sind dürfen nicht zwischen Anführungszeichen geschrieben werden. Ein Beispiel ist hier zu finden.

Simulation

Für jede Komponente ist mindestens eine Testbench, ein .do-Datei für das Laden der Simulation und ein .do-Datei für das Laden der Waveforms zu erstellen. Dabei muss in der Testbench mindestens die Komponente erstellt und allen Eingangssignalen ein Standardwert zugewiesen werden.

Versionierung

Die Version besitzt folgendes Format: 0.0.0. Die erste Zahl gibt Änderungen an der API der Componente an. Die zweite Zahl wird hochgezählt wenn die Features der Componente ändern. Die letze Zahl wird hochgezählt wenn irgend welche Bugfixes gemacht wurden.

Tags

Sobald eine Komponente einen gewissen Stand erreicht hat bzw. spätestens wenn sie in irgend einem Projekt ausgeliefert wird muss im SVN ein Tag erstellt werden. Davor wird eine neue Version vergeben.

-------------------------------------------------------------------------------
--     ____  _____          __    __    ________    _______
--    |    | \    \        |   \ |  |  |__    __|  |   __  \
--    |____|  \____\       |    \|  |     |  |     |  |__>  ) 
--     ____   ____         |  |\ \  |     |  |     |   __  <
--    |    | |    |        |  | \   |     |  |     |  |__>  )
--    |____| |____|        |__|  \__|     |__|     |_______/
--
--    NTB University of Applied Sciences in Technology
--
--    Campus Buchs - Werdenbergstrasse 4 - 9471 Buchs - Switzerland
--    Campus Waldau - Schoenauweg 4 - 9013 St. Gallen - Switzerland
--
--    Web http://www.ntb.ch        Tel. +41 81 755 33 11
--
-------------------------------------------------------------------------------
-- Copyright 2013 NTB University of Applied Sciences in Technology
-------------------------------------------------------------------------------
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
-- 
-- http://www.apache.org/licenses/LICENSE-2.0
--   
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
-------------------------------------------------------------------------------

overview