我有一個寫入System Verilog的模塊,它將SRAM的內容轉儲到文件中。我想從這個文件中讀取數據,並在用python編寫的單獨程序中使用這些數據,但是需要實時進行。我對verilog代碼的寫作沒有太多的控制。是否有可能以某種方式管理這兩個讀取和寫入?目前,當它從文件中讀取時,每行的開頭都會插入一個(看似)隨機數,並拋出解析。我假設這些前綴只在他們同時讀寫時出現,因爲如果我以非常緩慢的速度運行它們,它就能正常工作。同時讀取和寫入文件
window = Tk()
canvas = Canvas(window, width=WIDTH, height=HEIGHT, bg="#000000")
canvas.pack()
img = PhotoImage(width=WIDTH, height=HEIGHT)
canvas.create_image((WIDTH/2, HEIGHT/2), image=img, state="normal")
def redraw():
fp = open('test_data.txt','r')
lines=fp.readlines()
for i in range(len(lines)):
#do stuff
fp.close()
window.after(35,redraw)
window.after(35,redraw)
mainloop()
這是讀什麼。
任何建議表示讚賞。
在我看來,像一個壞主意,並且您需要一些其他方法來控制何時一個進程可以讀取另一個進程在文件中生成的數據 - 例如使用fifo。您閱讀的「隨機內容」可能是由於您正在閱讀*行引起的。*如果完整內容爲「ab \ ncd \ nef \ n」,則爲三行;但如果部分文件包含「ab \ nc」,則它將被讀作兩行,並且當更多時間後來時,「d \ nef \ n」將被讀爲兩行。 –
如何使用[sqlite](http://www.sqlite.org/)這是一個非常簡單的獨立數據庫。 Python使用[sqlite3](http://docs.python.org/2/library/sqlite3.html)本地說明它,但是您必須將C/C++代碼作爲系統任務或DPI鏈接到您的Verilog模擬器打電話讓Verilog說出來。 –
使用文件實時通信聽起來像一個壞主意。您可以修改SystemVerilog代碼來調用DPI函數而不是寫入文件? – dwikle