From 0118fda68a7aeec65350bd0c5762bbcd0b8b66df Mon Sep 17 00:00:00 2001
From: Dimitris Lampridis <Dimitris.Lampridis@cern.ch>
Date: Fri, 23 Mar 2018 14:19:10 +0100
Subject: [PATCH] hdl: import f_pick functions from mockturtle

---
 modules/common/gencores_pkg.vhd | 49 +++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/modules/common/gencores_pkg.vhd b/modules/common/gencores_pkg.vhd
index aa1bc5f..7d6e017 100644
--- a/modules/common/gencores_pkg.vhd
+++ b/modules/common/gencores_pkg.vhd
@@ -611,6 +611,16 @@ package gencores_pkg is
   function f_to_std_logic_vector (c : character) return std_logic_vector;
   function f_to_std_logic_vector (s : string) return std_logic_vector;
 
+  -- Functions for short-hand if assignments
+  function f_pick (cond : boolean; if_1 : std_logic; if_0 : std_logic)
+    return std_logic;
+  function f_pick (cond : boolean; if_1 : std_logic_vector; if_0 : std_logic_vector)
+    return std_logic_vector;
+  function f_pick (cond : std_logic; if_1 : std_logic; if_0 : std_logic)
+    return std_logic;
+  function f_pick (cond : std_logic; if_1 : std_logic_vector; if_0 : std_logic_vector)
+    return std_logic_vector;
+
 end package;
 
 package body gencores_pkg is
@@ -802,4 +812,43 @@ package body gencores_pkg is
     return rv;
   end function f_to_std_logic_vector;
 
+  ------------------------------------------------------------------------------
+  -- Functions for short-hand if assignments
+  ------------------------------------------------------------------------------
+  function f_pick (cond : std_logic; if_1 : std_logic; if_0 : std_logic)
+    return std_logic
+  is
+  begin
+    if cond = '1' then
+      return if_1;
+    else
+      return if_0;
+    end if;
+  end function f_pick;
+
+  function f_pick (cond : std_logic; if_1 : std_logic_vector; if_0 : std_logic_vector)
+    return std_logic_vector
+  is
+  begin
+    if cond = '1' then
+      return if_1;
+    else
+      return if_0;
+    end if;
+  end function f_pick;
+
+  function f_pick (cond : boolean; if_1 : std_logic; if_0 : std_logic)
+    return std_logic
+  is
+  begin
+    return f_pick (f_to_std_logic(cond), if_1, if_0);
+  end function f_pick;
+
+  function f_pick (cond : boolean; if_1 : std_logic_vector; if_0 : std_logic_vector)
+    return std_logic_vector
+  is
+  begin
+    return f_pick (f_to_std_logic(cond), if_1, if_0);
+  end function f_pick;
+
 end gencores_pkg;
-- 
GitLab