คุณสามารถอินเทอร์เฟซสำหรับ testimench Modelsim ด้วยสิ่งเร้าภายนอก


10

ฉันกำลังทำงานกับทีมที่ทำทั้งซอฟต์แวร์ไดรเวอร์และการพัฒนา FPGA การจำลอง FPGA กำลังดำเนินการใน Modelsim และซอฟต์แวร์ไดรเวอร์เขียนด้วยภาษาซีเพื่อลดความเสี่ยงในการรวมระบบฉันชอบที่จะสามารถจำลองการทำงานร่วมกันระหว่างสองส่วนของผลิตภัณฑ์ของเราก่อนที่จะวางลงบนฮาร์ดแวร์

ฉันรู้ว่า Modelsim รองรับ testbench ที่ให้คุณจัดเตรียมสิ่งเร้าในรูปแบบของไฟล์ข้อความที่มีเวลาและค่าสำหรับป้อนข้อมูล ฉันสงสัยว่า Modelsim มีโหมดที่อนุญาตให้คุณเชื่อมต่อท่อกับแอปพลิเคชันภายนอก (เช่นไดรเวอร์ของเรา) และเรียกใช้การจำลองแบบกระจายที่ซอฟต์แวร์สามารถส่งค่าลงใน testbench แล้วสังเกตผลลัพธ์ในภายหลัง .

เคล็ดลับที่ฉันไม่สามารถทำได้กับอินพุตไฟล์ข้อความคือการโต้ตอบกับผลิตภัณฑ์สองส่วน ฉันต้องมีซอฟต์แวร์ "เขียน" ค่าลงในเครื่องจำลอง FPGA อ่านผลลัพธ์แล้วเขียนค่าใหม่ลงใน FPGA ซึ่งขึ้นอยู่กับผลลัพธ์ที่อ่าน ไฟล์ข้อความกำหนดให้อินพุตเป็นอิสระจากเอาต์พุต

ฉันค้นหาทั้ง StackExchange และ google แล้ว แต่ฉันไม่สามารถหาชุดคำหลักเพื่อ จำกัด การค้นหาให้แคบลงพอที่จะระบุพฤติกรรมที่ฉันกำลังค้นหาหรือตรวจสอบว่าไม่มีอยู่จริง

คำตอบ:


9

การควบคุมภายนอกของการจำลอง Modelim ผ่าน Unix Named Pipes

บทคัดย่อ: ในวิทยานิพนธ์นี้เรานำเสนอวิธีการควบคุมแบบจำลอง ModelSim ผ่านโปรแกรมภายนอก การสื่อสารระหว่าง ModelSim และโปรแกรมภายนอกสามารถทำได้โดยใช้ Named Pipes ("FIFOs") ซึ่งปรากฏเป็นไฟล์ปกติสำหรับแต่ละแอปพลิเคชัน ความแตกต่างที่สำคัญระหว่างการใช้ FIFO กับไฟล์ปกติสำหรับการสื่อสารระหว่างกระบวนการ (IPC) คือแอปพลิเคชันที่พยายามเขียนไปยัง FIFO ถูกหยุดชั่วคราวจนกว่าแอปพลิเคชันอื่นจะพยายามอ่านจาก FIFO และในทางกลับกัน สิ่งนี้ช่วยเพิ่มความน่าเชื่อถือของ IPC ข้อได้เปรียบที่สำคัญของวิธีนี้คือ 1) เนื่องจากมีการใช้งานไฟล์ทั่วไปเท่านั้นแอปพลิเคชันภายนอกจึงสามารถเขียนได้ในเกือบทุกภาษาการเขียนโปรแกรม 2) ให้วิศวกรตรวจสอบความสามารถในการนำแพคเกจซอฟต์แวร์ตรวจสอบมาตรฐานกลับมาใช้ใหม่โดยมีการเขียนใหม่น้อยที่สุด 3) โดยการมีอุปกรณ์หลายตัวที่อยู่ภายใต้การทดสอบ (DUT) สื่อสารกันทำให้สามารถสร้างระบบจำลองขั้นสุดท้ายที่แม่นยำยิ่งขึ้น และ 4) ประสิทธิภาพของการจำลองโดยรวมสามารถเพิ่มขึ้นได้อย่างง่ายดายบนคลัสเตอร์ Single-System Image (SSI) หรือคอมพิวเตอร์หลายตัวประมวลผลแม้ว่าโปรแกรมจำลองของ ModelSim จะไม่ทำงานแบบหลายเธรด เนื่องจากการใช้งานอินพุต / เอาต์พุตไฟล์ (I / O) สำหรับ VHDL เชิงพฤติกรรม ModelSim ไม่สามารถอ่านหรือเขียน FIFO เหล่านี้ได้โดยตรง วิธีแก้ปัญหาสำหรับข้อ จำกัด นี้ถูกแสดงโดยใช้อินเตอร์เฟสภาษาต่างประเทศของ ModelSim (FLI) บทความนี้ยังแสดงตัวอย่างการทำงานของวิธีนี้ที่ใช้ในการตรวจสอบของรูทีนจุดต่อไปใน VHDL แพคเกจซอฟต์แวร์ IEEE Compliance Checker แบบโอเพ่นซอร์สซึ่งเขียนด้วยภาษา C ++

และปัญหาของ FIFO ที่ต้องการอินเตอร์เฟสการเขียนโปรแกรมต่างประเทศคือไฟล์ VHDL I / O ไม่สามารถจัดการกับการบล็อคได้อย่างสง่างามจนกว่าจะมีข้อมูล

น่าเสียดายที่วิทยานิพนธ์ไม่สามารถใช้ได้บนเว็บ

Model Sim ®อินเตอร์เฟสภาษาต่างประเทศเวอร์ชัน 5.6d , PDF 3.4 MB

ใช้ ModelSim Foreign Language Interface สำหรับ c - VHDL Co- Simulation และสำหรับ Simulator Control บน Linux x86 Platform Andre Pool - fli@andrepool.com - เวอร์ชั่น 1.5 - สร้างขึ้นในเดือนพฤศจิกายน 2555 อัพเดตล่าสุดกันยายน 2556 , PDF, 320KB (และไม่เคยกล่าวถึง FIFOs) .

ใช้ ModelSim Foreign Language Interface สำหรับ c - VHDL Co-Simulation และสำหรับ Simulator Control บน Linux x86 แพลตฟอร์ม (ที่เก็บรหัส github ที่ตรงกัน)

มีบิตมาเปิดมากขึ้นโดยใช้ฟังก์ชั่นการโทรจากต่างประเทศใน VHPI ghdl เป็น: VHDL / src / ซิม / ghdlex_mein ที่หลัก· texane / VHDL · GitHub

และสิ่งที่ดูเหมือนการอัปเดตจาก Martin Strubel ในรายการ GHDL_discuss: http://www.section5.ch/downloads/ghdlex-0.051.tgzแสดงวันที่ fifo.c วันที่ 14 เมษายน 2014

FLI จะล็อคคุณไว้ใน Modelsim โดยไม่แน่ใจว่าอยู่ในสถานะของการสนับสนุน VHPI (ซึ่งเป็นส่วนหนึ่งของ IEEE Std 1076-2008, VHDL LRM)

การใช้ซ็อกเก็ตหรือไฟล์ FIFO ช่วยให้ซอฟต์แวร์และกระบวนการฮาร์ดแวร์ทำงานในอัตราที่ต่างกันโดยการกำหนดอัตราการบัฟเฟอร์ ไม่จำเป็นเสมอไปหากระบบซอฟต์แวร์ของคุณมีขนาดที่เร็วกว่าการจำลองฮาร์ดแวร์ (และโดยทั่วไปคือ)

มีความพยายามที่จะมอบฟังก์ชั่น UNIX (POSIX) ให้กับ VHDL ดูแพ็คเกจ Public Domain VHDLซึ่งมีตัวชี้ไปยังกระดาษก่อนหน้าSNUG San Jose 2002 1 C / UNIX ฟังก์ชั่นสำหรับ VHDL Testbenches ฟังก์ชัน C / UNIX สำหรับ VHDL Testbenchesพร้อมสไลด์ ตั้งกับบันทึกเพิ่มเติมเกี่ยวกับท่อ Unix และ rsh นี่แสดงวิธีการเปิดไปป์ที่มีชื่อ รหัส VHDL ทั้งหมดสามารถดาวน์โหลดได้เช่นกัน ฉันเห็นว่าสิ่งนี้จะนำไปสู่วิธีที่ง่ายที่สุดในการบรรลุเป้าหมายของคุณ

ดังนั้นมีบางอย่างในถิ่นกำเนิดของ Modelsim ที่ให้คุณเชื่อมต่อกับท่อได้หรือไม่? ไม่น่าจะเป็นเช่นนั้นภายใต้ Windows มันสามารถทำได้? ใช่ แต่วิธีการไม่ใช่สำหรับคนใจร้อน คุณสามารถหยุดปลายด้านหนึ่งหรือปลายอีกด้านหนึ่งหรืออาจทั้งสองกำลังรอความพร้อมของข้อมูล

อินเทอร์เฟซการเขียนโปรแกรมต่างประเทศตามหลักวิชาอนุญาตให้คุณวางไข่กระบวนการลูกสำหรับปลายด้านหนึ่งของ 'pip' ซึ่งหมายความว่าคุณสามารถใช้โมเดลหน่วยความจำที่ใช้ร่วมกันเพื่อสื่อสารระหว่างปลายทั้งสอง


ขอบคุณสำหรับคำตอบที่ได้รับการวิจัยอย่างยอดเยี่ยม! "อินเตอร์เฟซภาษาต่างประเทศ" เป็นวลีที่ฉันต้องการเพื่อดึงเอกสารอ้างอิงที่ฉันต้องการฉันแค่ไม่เคยเดาเลย! บูรณาการที่นี่ก่อนฉันมา!
Cort Ammon

5

คุณอาจต้องการที่จะดูที่Cocotb มันเป็นไลบรารี่ Co-Simulation ที่ใช้ Python หนึ่งในเป้าหมายการออกแบบคือการเปิดใช้วิธีการที่คุณอธิบายจำลองซอฟต์แวร์การผลิตที่ไม่ได้รับการแก้ไขและ RTL ได้อย่างง่ายดาย

มีตัวอย่างในที่เก็บของการเรียกใช้pingคำสั่งที่ไม่ได้แก้ไขกับการจำลองและบทช่วยสอนที่เดินผ่านโค้ด

สำหรับไดรเวอร์พื้นที่ผู้ใช้ยูทิลิตีการกำหนดค่า ฯลฯ คุณมีสองตัวเลือกในการรันซอฟต์แวร์ของคุณโดยไม่มีการแก้ไข :

  1. หากการเข้าถึงอุปกรณ์ของคุณลดน้อยลงไปยังฟังก์ชั่นบางอย่าง (เช่นการอ่านและการเขียน) คุณสามารถเชื่อมโยงกับห้องสมุดจำลองที่ปิดกั้นขณะทำการเข้าถึงกับการจำลอง วิธีนี้ใช้งานได้ดีสำหรับการกำหนดค่า

  2. หากหน่วยความจำการใช้ซอฟต์แวร์ของคุณแมป IO และ dereferences ตัวชี้ไปยังการเข้าถึงอุปกรณ์แล้วสิ่งที่ได้รับความซับซ้อนมากขึ้นเล็กน้อย - คุณต้องสร้างพื้นที่หน่วยความจำที่ใช้ร่วมกันกับบิตการป้องกันการตั้งค่าและการเข้าถึงกับดัก

หากคุณใช้เครือข่ายแล้วสามารถใช้อินเทอร์เฟซเสมือนเช่น TUN / TAP (ดูบทช่วยสอนที่กล่าวถึงข้างต้น) ฉันสงสัยว่าอาจมีตัวเลือกที่คล้ายกันสำหรับการถ่ายโอน USB หรืออินเตอร์เฟสโฮสต์ทั่วไปอื่น ๆ

Cocotb ทำงานร่วมกับเครื่องจำลองและ VHDL (ผ่าน VHPI) หรือการออกแบบ Verilog / SystemVerilog (ผ่าน VPI) ที่หลากหลาย แต่น่าเสียดายที่ Modelsim ไม่ได้ใช้ VHPI ดังนั้นในฐานะผู้ใช้ VHDL ที่คุณติดอยู่กับ FLI ซึ่งแทบไม่มีประโยชน์ในฐานะส่วนต่อประสาน คุณสามารถส่งเสียงครวญครางที่ Mentorเพื่อลองและชักชวนพวกเขาให้ใช้อินเทอร์เฟซมาตรฐานอุตสาหกรรมหรือคุณสามารถประเมินเครื่องมือจำลองอื่นที่รองรับ VHPI

น่าเศร้าที่ดูเหมือนว่าผู้จำหน่ายเครื่องมือโดยทั่วไปไม่สนใจในตลาด VHDL โดยเฉพาะอย่างยิ่งตัดสินเมื่อถึงเวลาที่พวกเขาจะใช้ฟังก์ชั่นที่เกี่ยวข้องกับ VHDL ...

ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้พัฒนา Cocotb

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.