Existe-t-il des fonctions système prenant en charge plus de 32 bits dans System Verilog? Je veux convertir une quantité réelle en une valeur intégrale contenant plus de 32 bits. La fonction système $ rtoi() fait exactement ce que je veux pour les valeurs qui peuvent être représentées en 32 bits ou moins. Y a-t-il un système intégré pour cela ou aurais-je besoin d'écrire le mien?La meilleure façon de convertir un nombre réel en valeur entière supérieure à 32 bits?
Pour un exemple concret, je voudrais être en mesure de faire quelque chose comme ce qui suit:
logic [41:0] test_value;
initial begin
test_value = $rtoi($pow(2.0, 39.5));
end
Si, au lieu de rtoi $(), j'utiliser l'inconnu recherché fonction du système. Étant donné la fonction correcte, je m'attendrais à ce que test_value soit initialisé avec la séquence de bits 42'b1011010100000100111100110011001111111001
ou éventuellement 42'b1011010100000100111100110011001111111010
si l'arrondi est pris en charge.
Je peux écrire ma propre fonction, mais je voudrais éviter de réinventer la roue sauf s'il n'y a pas de roue.
Merci pour votre réponse, @ dave_59. Ces deux ont travaillé pour moi. FYI: Il y a une faute de frappe dans votre type explicite, l'identifiant pour la déclaration est uint42_t et le casting a un underscore supplémentaire. J'ai essayé de le réparer, mais il ne m'a pas laissé parce que je n'ai pas changé à au moins 6 caractères. – hops