summaryrefslogtreecommitdiff
path: root/testsuite/gna/bug019/PoC/src/common/debug.vhdl
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/gna/bug019/PoC/src/common/debug.vhdl')
-rw-r--r--testsuite/gna/bug019/PoC/src/common/debug.vhdl87
1 files changed, 87 insertions, 0 deletions
diff --git a/testsuite/gna/bug019/PoC/src/common/debug.vhdl b/testsuite/gna/bug019/PoC/src/common/debug.vhdl
new file mode 100644
index 0000000..dda3cb0
--- /dev/null
+++ b/testsuite/gna/bug019/PoC/src/common/debug.vhdl
@@ -0,0 +1,87 @@
+-- EMACS settings: -*- tab-width: 2; indent-tabs-mode: t -*-
+-- vim: tabstop=2:shiftwidth=2:noexpandtab
+-- kate: tab-width 2; replace-tabs off; indent-width 2;
+--
+-- ============================================================================
+-- Authors: Thomas B. Preusser
+-- Martin Zabel
+-- Patrick Lehmann
+--
+-- Package: Debug helper functions.
+--
+-- Description:
+-- ------------------------------------
+-- This file declares a debug helper function to export enum encodings as a
+-- ChipScope readable token file (*.tok).
+--
+-- License:
+-- ============================================================================
+-- Copyright 2007-2015 Technische Universitaet Dresden - Germany,
+-- Chair for VLSI-Design, Diagnostics and Architecture
+--
+-- 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.
+-- ============================================================================
+
+use STD.TextIO.all;
+
+library PoC;
+use PoC.strings.all;
+
+
+package debug is
+ impure function dbg_ExportEncoding(Name : STRING; encodings : string; tokenFileName : STRING) return BOOLEAN;
+
+end package;
+
+
+package body debug is
+ impure function dbg_ExportEncoding(Name : STRING; encodings : string; tokenFileName : STRING) return BOOLEAN is
+ file tokenFile : TEXT open WRITE_MODE is tokenFileName;
+
+ variable cnt, base : integer;
+ variable l : line;
+ begin
+ report "Exporting encoding of '" & Name & "' to '" & tokenFileName & "'..." severity note;
+ report "dbg_ExportEncoding: '" & encodings & "'" severity note;
+
+ -- write file header
+ write(l, STRING'("# Encoding file for '" & Name & "'")); writeline(tokenFile, l);
+ write(l, STRING'("#")); writeline(tokenFile, l);
+ write(l, STRING'("# ChipScope Token File Version")); writeline(tokenFile, l);
+ write(l, STRING'("@FILE_VERSION=1.0.0")); writeline(tokenFile, l);
+ write(l, STRING'("#")); writeline(tokenFile, l);
+ write(l, STRING'("# Default token value")); writeline(tokenFile, l);
+ write(l, STRING'("@DEFAULT_TOKEN=")); writeline(tokenFile, l);
+ write(l, STRING'("#")); writeline(tokenFile, l);
+
+ -- write state entires
+ cnt := 0;
+ base := encodings'left;
+ for i in encodings'range loop
+ if encodings(i) = ';' then
+ -- Leave the str_trim call in!
+ -- Otherwise, the new parser of ISE 14.7 fails to slice properly.
+ write(l, str_trim(encodings(base to i-1)));
+ write(l, character'('='));
+ write(l, raw_format_nat_hex(cnt));
+ writeline(tokenFile, l);
+ cnt := cnt + 1;
+ base := i+1;
+ end if;
+ end loop;
+
+ file_close(tokenFile);
+ return true;
+ end function;
+end package body;
+