summaryrefslogtreecommitdiff
path: root/src/grt/grt-avhpi_utils.adb
diff options
context:
space:
mode:
authorTristan Gingold2015-03-07 07:30:07 +0100
committerTristan Gingold2015-03-07 07:30:07 +0100
commit8af64459f397e5037dd7e25317491edad39d8006 (patch)
tree13476a4fe7a97c9dc62df4d03bf33045e2920b04 /src/grt/grt-avhpi_utils.adb
parentad4ac5499e426cff9b76479e8ff6250a32fcbb57 (diff)
downloadghdl-8af64459f397e5037dd7e25317491edad39d8006.tar.gz
ghdl-8af64459f397e5037dd7e25317491edad39d8006.tar.bz2
ghdl-8af64459f397e5037dd7e25317491edad39d8006.zip
Implement ticket 37: add switch -gNAME=VAL to override top entity generics.
Diffstat (limited to 'src/grt/grt-avhpi_utils.adb')
-rw-r--r--src/grt/grt-avhpi_utils.adb65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/grt/grt-avhpi_utils.adb b/src/grt/grt-avhpi_utils.adb
new file mode 100644
index 0000000..6fedf1b
--- /dev/null
+++ b/src/grt/grt-avhpi_utils.adb
@@ -0,0 +1,65 @@
+-- GHDL Run Time (GRT) - Utility functions for AVHPI.
+-- Copyright (C) 2015 Tristan Gingold
+--
+-- GHDL is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU General Public License as published by the Free
+-- Software Foundation; either version 2, or (at your option) any later
+-- version.
+--
+-- GHDL is distributed in the hope that it will be useful, but WITHOUT ANY
+-- WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+-- for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with GCC; see the file COPYING. If not, write to the Free
+-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+-- 02111-1307, USA.
+--
+-- As a special exception, if other files instantiate generics from this
+-- unit, or you link this unit with other files to produce an executable,
+-- this unit does not by itself cause the resulting executable to be
+-- covered by the GNU General Public License. This exception does not
+-- however invalidate any other reasons why the executable file might be
+-- covered by the GNU Public License.
+
+with Grt.Errors; use Grt.Errors;
+
+package body Grt.Avhpi_Utils is
+ function Get_Root_Entity (Root : VhpiHandleT) return VhpiHandleT
+ is
+ Hdl : VhpiHandleT;
+ Error : AvhpiErrorT;
+ begin
+ Vhpi_Handle (VhpiDesignUnit, Root, Hdl, Error);
+ if Error /= AvhpiErrorOk then
+ Internal_Error ("VhpiDesignUnit");
+ end if;
+
+ case Vhpi_Get_Kind (Hdl) is
+ when VhpiArchBodyK =>
+ Vhpi_Handle (VhpiPrimaryUnit, Hdl, Hdl, Error);
+ if Error /= AvhpiErrorOk then
+ Internal_Error ("VhpiPrimaryUnit");
+ end if;
+ when others =>
+ Internal_Error ("get_root_entity");
+ end case;
+ return Hdl;
+ end Get_Root_Entity;
+
+ function Name_Compare (Handle : VhpiHandleT;
+ Name : String;
+ Property : VhpiStrPropertyT := VhpiNameP)
+ return Boolean
+ is
+ Obj_Name : String (1 .. Name'Length);
+ Len : Natural;
+ begin
+ Vhpi_Get_Str (Property, Handle, Obj_Name, Len);
+ return Len = Name'Length and then Obj_Name = Name;
+ end Name_Compare;
+
+end Grt.Avhpi_Utils;
+
+